题解:P17134 [KOI 2026 #1] 邻居

· · 题解

题意

n 个学生住在自己编号对应的房屋中,距离就是学生编号之差,定义邻居为同校学生距离 \le m 或者异校学生距离 \le k。求每个学生的邻居数(自己除外)。

分析

对于判断,我们根据是否为同校得到距离的限制,然后如果在限制内答案就加 $1$。 注意判一下学生 $j$ 是否是自己即可。复杂度 $O(n^2)$。 ## 代码 ```cpp #include<bits/stdc++.h> using namespace std; const int N = 3010; int a[N]; int main() { int n,m,k; cin>>n>>m>>k; for(int i = 1; i <= n; i ++) cin>>a[i]; for(int i = 1; i <= n; i ++) { int res = 0; for(int j = 1; j <= n; j ++) if(i != j) res += abs(i - j) <= (a[i] == a[j] ? m : k); cout<<res<<' '; } cout<<'\n'; return 0; } ```