社区讨论
30 pts #1#3#5 玄关求条!!
P2278[HNOI2003] 操作系统参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mj3m8uhv
- 此快照首次捕获于
- 2025/12/13 09:27 3 个月前
- 此快照最后确认于
- 2025/12/14 18:05 3 个月前
代码如下
CPP#include<bits/stdc++.h>
using namespace std;
const int MAXN=2250500;
struct node{
int a,b,c,d;
bool operator < (const node& n) const{
if(n.d!=d) return d<n.d;
else return a>n.a;
}
}f[MAXN];
priority_queue <node> q;
int main(){
int x;
int t,pre=0;
while(cin>>x){
f[x].a=x;
cin>>f[x].b>>f[x].c>>f[x].d;
t=f[x].b;
while(!q.empty()){
node p=q.top();
if(max(pre,p.b)+f[p.a].c<t){//有时间执行
cout<<p.a<<" "<<max(pre,p.b)+f[p.a].c<<endl;
pre=max(pre,p.b)+f[p.a].c;
q.pop();
}else{//没有时间执行或执行会被中断
f[p.a].c-=(t-max(pre,f[p.a].b));
pre=t;
break;
}
}
q.push(f[x]);
}
while(!q.empty()){
node p=q.top();
cout<<p.a<<" "<<max(pre,f[p.a].b)+f[p.a].c<<endl;
pre=max(pre,p.b)+f[p.a].c;
q.pop();
}
return 0;
}
感谢大佬
回复
共 1 条回复,欢迎继续交流。
正在加载回复...