社区讨论
神奇做法90pts求条
P14635[NOIP2025] 糖果店参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mil4jyq7
- 此快照首次捕获于
- 2025/11/30 10:52 3 个月前
- 此快照最后确认于
- 2025/12/02 15:45 3 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
long long n,m,cnt=0,res=0,res2=0,minn=INT_MAX,minid=0;
priority_queue<int>q;
bool vis[100010];
struct candy{
long long x,y,sum;
}ca[100010];
long long cmp(candy x,candy y){
return x.x<y.x;
}
int main(){
//freopen("candy.in","r",stdin);
//freopen("candy.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>m;
long long ls=m;
for(int i=1;i<=n;i++){
cin>>ca[i].x>>ca[i].y;
if(ca[i].x==ca[i].y) cnt++;
ca[i].sum=ca[i].x+ca[i].y;
if(ca[i].sum<minn) minn=ca[i].sum;
}
sort(ca+1,ca+n+1,cmp);
for(int i=1;i<=n;i++)
if(ca[i].sum==minn){
minid=i;
break;
}
for(int i=1;i<=n;i++){
if(ca[i].x<ca[minid].y&&m>=ca[i].x){
res++;
m-=ca[i].x;
}else{
if(vis[minid]){
res++;
m-=ca[minid].y;
}
res+=(m/minn)*2;
res2+=(ls/minn)*2;
break;
}
}
res2=max(res,res2);
m=ls,res=0;
for(int i=1;i<=minid+1;i++){
if(i==minid) continue;
if(i<minid){
res++;
m-=ca[i].x;
vis[i]=1;
q.push(ca[i].x);
}else if(i==minid+1){
res+=((m-(m%minn))/minn)*2;
m%=minn;
for(int j=minid;j<=n;j++){
if(m>=ca[j].x) m-=ca[j].x,res++;
}
long long lls=max(res,res2);
while(!q.empty()){
res--;
m+=q.top();
q.pop();
res+=((m-(m%minn))/minn)*2;
m%=minn;
if(res>lls) lls=res;
}
cout<<lls;
}
}
return 0;
}
题外话:89分能得奖吗?(FJ)
回复
共 0 条回复,欢迎继续交流。
正在加载回复...