社区讨论
求问代码正确性
P14635[NOIP2025] 糖果店参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mijyfoio
- 此快照首次捕获于
- 2025/11/29 15:13 3 个月前
- 此快照最后确认于
- 2025/11/30 11:10 3 个月前
rt,考场上大样例全过,民间数据2wa2tle
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){
int x=0,f=0;
char c=getchar();
while(!isdigit(c))f|=c=='-',c=getchar();
while(isdigit(c))x=x*10+(c^48),c=getchar();
return f?-x:x;
}
struct node{
int x,y;
}a[1000100];
int n,m,sum[1000010];
int tw(int pos){
int l=1,r=n,ans=0;
while(l<=r){
int mid=(l+r)>>1;
if(sum[mid]<=pos){
l=mid+1;
ans=mid;
}else{
r=mid-1;
}
}
return ans;
}
bool cmp(node x,node y){
return x.x<y.x;
}
int mn=LLONG_MAX,mnx,mny;
signed main(){
n=read(),m=read();
for(int i=1;i<=n;i++){
a[i].x=read(),a[i].y=read();
if(a[i].x+a[i].y<mn){
mn=a[i].x+a[i].y;
mny=a[i].y;
mnx=a[i].x;
}else if(a[i].x+a[i].y==mn){
if(a[i].y>mny){
mny=a[i].y;
mnx=a[i].x;
}
}
}
int ans=m/mn*2,ans1=0;
m-=m/mn*mn;
sort(a+1,a+1+n,cmp);
ans1=ans;
for(int i=1;i<=n;i++){
sum[i]=sum[i-1]+a[i].x;
}
for(int i=0;i<=ans;i++){
if(i&1){
m+=mny;
}else if(i){
m+=mnx;
}
ans1=max(ans1,ans+tw(m)-i);
}
cout<<ans1;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...