题目链接
AcWing 101.
思路:记每头牛的初始身高为H,若a,b两头牛能看见,则他们之间的牛身高减一即可。
利用差分数组记录区间修改即可。注意重复关系不要重复处理。
/*
思路:记每头牛的初始身高为H,若a,b两头牛能看见,则他们之间的牛身高减一即可。
利用差分数组记录区间修改即可。注意重复关系不要重复处理。
*/
#include <bits/stdc++.h>
using namespace std;
int a[5050];
int main()
{
std::ios::sync_with_stdio(false);std::cin.tie(nullptr);
map<pair<int,int>,bool> mp;
int n,p,h,m;
cin >> n >> p >> h >> m;
a[1] = h;
int u,v;
for(int i=1;i<=m;i++){
cin >> u >> v;
if(u>v) swap(u,v);
if(mp[make_pair(u,v)]==1) continue;
mp[make_pair(u,v)] = 1;
a[u+1]--; // 注意这里是两头牛之间 即 l = u+1 , r = v-1
a[v]++;
}
for(int i=1;i<=n;i++) a[i] += a[i-1];
for(int i=1;i<=n;i++) cout << a[i] << '\n';
return 0;
}