社区讨论
如何降低此代码时间复杂度
P11349 [NOISG 2024 Finals] Problem Setter参与者 5已保存回复 19
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 19 条
- 当前快照
- 1 份
- 快照标识符
- @mhj0upk2
- 此快照首次捕获于
- 2025/11/03 18:53 4 个月前
- 此快照最后确认于
- 2025/11/03 20:31 4 个月前
确实是被hack狠狠地爆了,需要降低时间复杂度但我不会
CPP#include<bits/stdc++.h>
using namespace std;
struct com{
long long id,s,m;
}cpt[200010];
long long cmp(com a,com b){
return a.s<b.s;
}
long long c,p,q[200010],d[200010],mnow,cm=1000000,cmid,l,r,sum,rem[1000010];
int main(){
cin>>c>>p;
for(int i=1;i<=c;i++){
cin>>mnow>>cpt[i].s;
cpt[i].m=mnow;
cpt[i].id=i;
if(mnow<cm){
cm=mnow;
cmid=i;
}
}
sort(cpt+1,cpt+1+c,cmp);
for(int i=1;i<=p;i++){
cin>>q[i]>>d[i];
r=c;
if(rem[q[i]]!=0&&d[i]<=rem[q[i]]){
sum+=rem[q[i]]-d[i];
continue;
}
if(d[i]>=cpt[c].s) continue;
while(q[i]<cpt[r].m&&d[i]<cpt[r].s){
r--;
if(cpt[r].id==cmid){
break;
}
}
if(d[i]>cpt[r].s) continue;
if(q[i]>=cpt[r].m&&d[i]<cpt[r].s){
rem[q[i]]=cpt[r].s;
sum+=cpt[r].s-d[i];
}
}
cout<<sum;
return 0;
}
回复
共 19 条回复,欢迎继续交流。
正在加载回复...