题解:P17134 [KOI 2026 #1] 邻居
___AaAa_bBcCd___ · · 题解
提示:该解法涉及知识点【前缀和】,难度为橙。
题目解法
虽然
做前缀和。定义
计算时,
参考代码
由于
#include<bits/stdc++.h>
using namespace std;
const int N=3001;
int n,k1,k2,s[N],a[N][3];
int main(){
cin>>n>>k1>>k2;
for(int i=1;i<=n;i++){
cin>>s[i];
a[i][1]=a[i-1][1];
a[i][2]=a[i-1][2];
a[i][s[i]]++;
}
for(int i=1;i<=n;i++){
int sum=0,l,r;
l=max(i-k1-1,0),r=min(i+k1,n);
sum+=a[r][s[i]]-a[l][s[i]];
s[i]^=3;
l=max(i-k2-1,0),r=min(i+k2,n);
sum+=a[r][s[i]]-a[l][s[i]];
cout<<sum-1<<' ';
}
return 0;
}