社区讨论
60ptsMLE求条
P11289【MX-S6-T1】「KDOI-11」打印参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mhk6x52j
- 此快照首次捕获于
- 2025/11/04 14:30 4 个月前
- 此快照最后确认于
- 2025/11/04 14:30 4 个月前
rt
CPP#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct fun{
ll t;
ll x;
ll id;
};
bool cmp(fun aa,fun bb){
return aa.x<bb.x;
}
fun a[222222];
priority_queue<ll,vector<ll>,greater<ll> >q1;//存空闲的 ,id从小到大排序
priority_queue<pair<ll,ll>,vector<pair<ll,ll> >,greater<pair<ll,ll> > >q2;//存运行的 ,按结束时间从小到大排序
priority_queue<ll,vector<ll>,greater<ll>>ans[222222];
int main(){
//freopen("print4.in","r",stdin);
//freopen("print11.ans","w",stdout);
ll n,m;
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=n;i++){
scanf("%lld%lld",&a[i].t,&a[i].x);
a[i].id=i;
}
for(ll i=1;i<=m;i++){
q1.push(i);
}
sort(a+1,a+n+1,cmp);
for(ll i=1;i<=n;i++){
while(!q2.empty()&&q2.top().first<=a[i].x){
q1.push(q2.top().second);
q2.pop();
}
if(!q1.empty()){
ans[q1.top()].push(a[i].id);
q2.push({a[i].x+a[i].t,q1.top()});
q1.pop();
}else{
ll minn=0x3f3f3f3f3f3f3f;
while(!q2.empty()&&q2.top().first<=minn){
minn=q2.top().first;
q1.push(q2.top().second);
}
ans[q1.top()].push(a[i].id);
q2.push({minn+a[i].t,q1.top()});
q1.pop();
}
}
for(ll i=1;i<=m;i++){
printf("%d",ans[i].size());
while(!ans[i].empty()){
printf(" %lld",ans[i].top());
ans[i].pop();
}
printf("\n");
}
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...