社区讨论

70分求助。。。

P8685[蓝桥杯 2019 省 A] 外卖店优先级参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m1u10qhr
此快照首次捕获于
2024/10/04 09:08
去年
此快照最后确认于
2024/10/04 10:43
去年
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
const int maxx = 100100;
struct node{int ts;int id;}shop[maxx];
int pri[maxx][2],temp[maxx];
int n,m,t,timee,cnt,num;
vector <int> prishop;
bool cmp(node a,node b){
	return a.ts < b.ts;
}
int main(){
	cin >> n >> m >> t;
	for(int i = 1;i <= m;i++){
		int s,d;
		cin >> s >> d;
		if(pri[d][0] == 0) num++;
		pri[d][0] = 1;
		shop[++cnt].ts = s;
		shop[cnt].id = d;
	}
	sort(shop,shop + cnt + 1,cmp);
	int back = 1;
	for(timee = 1;timee <= t;timee++){
		for(int i = 1;i <= num;i++) temp[i] = 0;
		for(int i = back;i <= cnt;i++){
			if(shop[i].ts == timee){
				pri[shop[i].id][1] += 2;
				temp[shop[i].id] = 1;
			}else {
				back = i;
				break;
			}
		}
		for(int i = 1;i <= num;i++){
			if(temp[i] != 1 && pri[i][1] != 0) pri[i][1]--;
			if(pri[i][1] > 5){
				auto it = std::find(prishop.begin(),prishop.end(),i);
				if(it == prishop.end()) prishop.push_back(i);
			}
			if(pri[i][1] <= 3){
				auto it = std::find(prishop.begin(),prishop.end(),i);
                if(it != prishop.end()) prishop.erase(it);
			}
		}
	}
	cout << prishop.size();
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...