题解:P17134 [KOI 2026 #1] 邻居
思路
模拟题。第一步先枚举两边
代码
#include<bits/stdc++.h>
using namespace std;
int a[100010];
int main(){
int n,k1,k2;
scanf("%d%d%d",&n,&k1,&k2);
for(int i=1;i<=n;++i){
scanf("%d",&a[i]);
}
for(int i=1;i<=n;++i){
int cnt=0;
for(int j=max(1,i-k1);j<i;++j){
if(a[j]==a[i])++cnt;
}
for(int j=min(n,i+k1);j>i;--j){
if(a[j]==a[i])++cnt;
}
for(int j=max(1,i-k2);j<i;++j){
if(a[j]!=a[i])++cnt;
}
for(int j=min(n,i+k2);j>i;--j){
if(a[j]!=a[i])++cnt;
}
printf("%d ",cnt);
}
return 0;
}