社区讨论
蒟蒻模拟,已被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 条回复,欢迎继续交流。
正在加载回复...