思路
很显然与第个位子无关,只要知道最大长度,其他尽可能贪心取最大值即可,当然一个位子不能重复操作,然后用
去重即可,然后题目给定的
不同,所以就不需要特判
.
代码
#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;
}

京公网安备 11010502036488号