30pts求调
  • 板块P1844 阅览室
  • 楼主entity
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/24 15:46
  • 上次更新2025/7/24 19:08:22
查看原帖
30pts求调
225964
entity楼主2025/7/24 15:46

模拟死活推不明白了,求dalao捞捞

#include<iostream>
using namespace std;
/*
10 4 
1
2 1 4 2 5 
3 
1 2 4 
7 
3 2 2 1 3 3 2 
9 
1 4 2
*/
int T,n,k,ans;
struct reader{
	int list,want[1001],last[1001],tick,nextTick;
	bool vis[1001];
}r[101];
int usedBy[1001]={};
int reading[1001]={};
int main(){
	while(cin>>T>>n){
		k=0;
		ans=0;
		for(int i=1;i<=1000;i++){
			usedBy[i]=0;
			reading[i]=0;
		}
		for(int i=1;i<=100;i++)
			for(int j=1;j<=1000;j++)
				r[i].vis[j]=0;
		for(int i=1;i<=n;i++){
			cin>>r[i].tick>>r[i].list;
			r[i].nextTick=r[i].tick;
			for(int j=1;j<=r[i].list;j++){
				cin>>r[i].want[j];
				cin>>r[i].last[r[i].want[j]];
			}
		}
		for(int t=r[1].tick;t<T;t++){
			for(int i=1;i<=n;i++){
				if(t<r[i].nextTick) continue;
				usedBy[reading[i]]=0;
				reading[i]=0;
				for(int j=1;j<=r[i].list;j++){
					if(r[i].vis[j]) continue;
					if(usedBy[r[i].want[j]]) continue;
					r[i].nextTick+=r[i].last[r[i].want[j]];
					reading[i]=r[i].want[j];
					usedBy[r[i].want[j]]=i;
					r[i].vis[j]=1;
					ans++;
//					cout<<t<<' '<<i<<' '<<r[i].want[j]<<endl;
					break;
				}
			}
		}
		cout<<ans<<endl;
	}
	return 0;
} 
2025/7/24 15:46
加载中...