社区讨论

蒟蒻模拟,已被hack掉,求帮拍估分

P14635[NOIP2025] 糖果店参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@miob44kw
此快照首次捕获于
2025/12/02 16:19
3 个月前
此快照最后确认于
2025/12/02 16:52
3 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
ll m,x[100005],y[100005];
typedef pair<ll,int> pii;
priority_queue<pii,vector<pii>,greater<pii> >q,prebuy;
ll mixy=2e9+10,presum=0,sum=0;
int mx,num=0;
bool b[100005];
int main(){
    cin >> n >> m;
    for(int i=1;i<=n;i++){
        cin >> x[i] >> y[i];
        q.push({x[i],i});
        if(mixy>x[i]+y[i]){
            mixy=x[i]+y[i];
            mx=i;
        }
    }
    while(!q.empty()){
        ll val=q.top().first; int now=q.top().second;
        if(now==mx) break;
        if(presum+val>m) break;
        prebuy.push(q.top());
        q.pop();
        presum+=val;
        num++;
    }
    if(num>=2){
        sum=num;
        m-=presum;
        while(!prebuy.empty()){
            ll val=prebuy.top().first; int now=prebuy.top().second;
            prebuy.pop();
            b[now]=true;
            q.push({y[now],now});
        }
    }
    sum+=m/mixy*2;
    m-=m/mixy*mixy;
    
    if(m){
        while(true){
            ll val=q.top().first; int now=q.top().second;
            q.pop();
            if(m<val) break;
            m-=val;
            sum++;
            if(!b[now]){    
                q.push({y[now],now});
                b[now]=true;
            }else{
               q.push({x[now],now});
                b[now]=false;
            }
        }    
    }
    cout << sum;
    return 0;
}

回复

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

正在加载回复...