社区讨论

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;
}
这是什么复杂度啊,我感觉是大常数 O(n)O(n),但是挂了 /fad

回复

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

正在加载回复...