社区讨论
TLE 求助
P9977[USACO23DEC] Bovine Acrobatics S参与者 2已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @mhjsxmqv
- 此快照首次捕获于
- 2025/11/04 07:59 4 个月前
- 此快照最后确认于
- 2025/11/04 10:25 4 个月前
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int ans;
int read(){
int sum=0,fish=1;
char c=getchar_unlocked();
while(c<'0'||c>'9')c=getchar_unlocked();
while(c>='0'&&c<='9')sum=sum*10+(c-'0'),c=getchar_unlocked();
return sum*fish;
}
void print(int x){
if(x<0)putchar_unlocked('-'),x=-x;
if(x<10)putchar_unlocked(x+'0');
else print(x/10),putchar_unlocked(x%10+'0');
}
struct fish{
int x,a;
}a[200005];
deque<fish>q;
bool cmp(fish x,fish y){
return x.x>y.x;
}
signed main(){
int n=read(),m=read(),k=read();
for(int i=1;i<=n;i++)
a[i].x=read(),a[i].a=read(),a[i].a=min(a[i].a,m),ans+=a[i].a;
sort(a+1,a+1+n,cmp);
int sum=0,i=1;
while(sum<m&&i<=n){
sum+=a[i].a;
int flc=0;
if(sum>m){
flc=sum-m;
a[i].a=m-(sum-a[i].a);
}
q.push_back(a[i]);
a[i].a=flc;
if(flc==0)i++;
}
for(;i<=n;i++){
while(!q.empty()&&q.front().x-a[i].x>=k&&a[i].a){
if(q.front().a<=a[i].a){
int flc=a[i].a-q.front().a;
a[i].a=q.front().a;
q.pop_front();
q.push_back(a[i]);
a[i].a=flc;
}else{
fish flc=q.front();
q.pop_front();
flc.a-=a[i].a;
if(flc.a)q.push_front(flc);
q.push_back(a[i]);
a[i].a=0;
}
}
ans-=a[i].a;
}
print(ans);
return 0;
}
这是什么复杂度啊,我感觉是大常数 ,但是挂了 /fad
回复
共 11 条回复,欢迎继续交流。
正在加载回复...