思路
很显然与第个位子无关,只要知道最大长度,其他尽可能贪心取最大值即可,当然一个位子不能重复操作,然后用去重即可,然后题目给定的不同,所以就不需要特判.
代码
#include <bits/stdc++.h> using namespace std; const int N=1e4+5; int d[N],ans[N]; unordered_map<int,bool>p[N]; int main() { int n,i,h,r; cin>>n>>i>>h>>r; int val=h; for(int j=1;j<=r;j++) { int x,y; scanf("%d%d",&x,&y); if(x>y) swap(x,y); if(p[x][y]) continue; p[x][y]=true; d[x+1]--;d[y]++; } for(int i=1;i<=n;i++) val+=d[i],ans[i]=val; for(int i=1;i<=n;i++) printf("%d\n",ans[i]); return 0; }