社区讨论
60pts求调
P14635[NOIP2025] 糖果店参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mik5ic5p
- 此快照首次捕获于
- 2025/11/29 18:31 3 个月前
- 此快照最后确认于
- 2025/11/30 19:00 3 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
int n,m,ans;
bool v[N];
struct rec
{
int x,y,z,id;
}a[N],b[N];
bool cmp1(rec qiu,rec qiuu)
{
return qiu.x<qiuu.x;
}
bool cmp2(rec qiu,rec qiuu)
{
return qiu.z<qiuu.z;
}
signed main()
{
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&a[i].x,&a[i].y);
a[i].z=a[i].x+a[i].y,a[i].id=i;
b[i].x=a[i].x,b[i].y=a[i].y,b[i].z=a[i].z,b[i].id=i;
}
sort(a+1,a+n+1,cmp1);
sort(b+1,b+n+1,cmp2);
int old=0,neww,sum=0,cnt=0,plus=b[1].z;
for(int i=1;i<=n;i++)
{
neww=m-sum-a[i].x;
if((neww/m)!=(old/m))
{
if(cnt<2||m<sum)
{
// for(int j=i-1;j>=i-cnt-1;j++) v[j]=false;
break;
}
m-=sum,ans+=cnt;
sum=0,cnt=0;
}
sum+=a[i].x,cnt++,old=neww;
}
ans=ans+(m/plus)*2;
m=m-(m/plus)*plus;
// for(int i=1;i<=n;i++)
// {
// if(!v[i]&&m>=a[i].x) ans++,m-=a[i].x;
printf("%lld",ans);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...