社区讨论
假做法ccf喜提95pts
P14635[NOIP2025] 糖果店参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mipq5ved
- 此快照首次捕获于
- 2025/12/03 16:08 3 个月前
- 此快照最后确认于
- 2025/12/05 14:50 3 个月前
rt,HAHAHAHAHAHAHAHA
CPP#include<bits/stdc++.h>
#define us unsigned
#define ll long long
#define ci const int
#define cd const double
#define pb push_back
#define ppb pop_back
#define gc getchar
#define ppct __builtin_popcount
#define ctz __builtin_ctz
using namespace std;
struct C
{
bool flg;
ll data,id;
C():data(0x3f3f3f3f),id(0),flg(0){}
C(ll d,ll i,bool f):data(d),id(i),flg(f){}
friend bool operator < (C a,C b){
if(a.flg==b.flg)
return a.data>b.data;
else if(a.flg==1)
return a.data>b.data*2;
else
return a.data*2>b.data;
}
};
ll n,m,ans;
ll x[100100],y[100100];
priority_queue<C> P;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;++i)
cin>>x[i]>>y[i];
for(int i=1;i<=n;++i){
P.push(C(x[i],i,0));
P.push(C(x[i]+y[i],i,1));
}
while(m>=P.top().data){
auto tmp=P.top();
P.pop();
// cout<<tmp.data<<'\n';
if(tmp.flg==1){
ans+=(m/tmp.data)*2;
m%=tmp.data;
continue;
}
++ans;
m-=tmp.data;
if(tmp.data==x[tmp.id])
P.push(C(y[tmp.id],tmp.id,0));
else
P.push(C(x[tmp.id],tmp.id,0));
}
cout<<ans<<endl;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...