极限求助
查看原帖
极限求助
335094
Lucifero楼主2021/5/4 20:47

rt,不会调了

#include <bits/stdc++.h>
using namespace std;
class Killer
{
public:
	int u,v;
}a[60001];
int blood[1001],last[1001],res[1001],n,m;
int back(int t)
{
	int alive(0),i;
	for(i=t+1;i<=n;i++)
		if (blood[a[i].u]>0)
			blood[a[i].v]--;
	for(i=1;i<=m;i++) alive+=(blood[i]>0);
	return alive;
}
int main()
{
	//「MCOI-05」追杀
	int i;
	scanf("%d%d",&n,&m);
	for(i=1;i<=m;i++) blood[i]=3;
	for(i=1;i<=n;i++) scanf("%d%d",&a[i].u,&a[i].v);
	for(i=1;i<=n;i++)
	{
		if (blood[a[i].u]<=0 || blood[a[i].v]<=0) continue;
		if (blood[a[i].u]==1)
		{
			blood[a[i].u]--;
			res[back(i)]+=i-last[a[i].u];
			last[a[i].u]=i;
			blood[a[i].u]++;
		}
		blood[a[i].v]--; 
	}
    for(i=1;i<=m;i++)
	{
		blood[i]--;
		res[back(n+1)]+=n+1-last[i];
		last[i]=n+1;
		blood[i]++;
	}
//	printf("0");
	for(i=0;i<=m;i++) printf("%d ",res[i]);
}
2021/5/4 20:47
加载中...