本想混个80分,结果只有20分
查看原帖
本想混个80分,结果只有20分
1264600
Lazy_make_name楼主2024/9/27 22:50

有点低级的做法(按理说会超时)

#include<iostream>
#include<algorithm>
using namespace std;
int yx[100001],f[100001],g,d=0;
int n,M,t,b;
bool h[100001];
struct xx{
	int tx,id;
}x[100001];
bool cmp(xx a,xx b){
	if(a.tx>b.tx||(a.tx==b.tx&&a.id>b.id)){
		return 1;
	}
	return 0;
}
int main(){
	cin>>n>>M>>t;
	for(int i=1;i<=M;i++){
		cin>>x[i].tx>>x[i].id;
	}
	sort(x,x+M,cmp);
	for(int i=1;i<=t;i++){
		while(x[b].tx==i){
			yx[x[b].id]+=2;
			if(yx[x[b].id]>5&&!h[x[b].id]){
				h[x[b].id]=1;
				d++;
			}
			g++;
			f[g]=x[b].id;
			b++;
		}
		for(int j=1;j<=g;j++){
			if(yx[f[g]]==0){
				continue;
			} 
			yx[f[g]]--;
			if(yx[f[g]]==3){
				h[f[g]]=0;
				d--;
			}
			/*if(yx[f[j]]==0){
				g--;
				for(int k=j;k<=g;k++){
					f[j]=f[j+1];
				}
			}*/
		}
	}
	cout<<g;
}
2024/9/27 22:50
加载中...