社区讨论
求代码思路对不对
P14635[NOIP2025] 糖果店参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mik6tzl2
- 此快照首次捕获于
- 2025/11/29 19:08 3 个月前
- 此快照最后确认于
- 2025/11/30 20:10 3 个月前
民间100(赛后回忆)
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5;
int n,m,sum = LONG_LONG_MAX,minx,ans,b[N + 5];
struct node{
int x,y;
bool operator < (const node &a) const{
return a.x > x;
}
};
node a[N + 5];
signed main(){
cin >> n >> m;
for(int i = 1;i <= n;i++){
cin >> a[i].x >> a[i].y;
}
sort(a + 1,a + 1 + n);
for(int i = 1;i <= n;i++){
if(sum > a[i].x + a[i].y){
sum = a[i].x + a[i].y;
minx = a[i].x;
}
}
for(int i = 1;i <= n;i++){
if(a[i].x > sum / 2)
break;
m -= a[i].x;
ans++;
}
int k = m / sum;
m -= k * sum;
ans += 2 * k;
if(m > 0){
for(int i = 1;i <= n;i++){
if(a[i].x <= sum / 2)
b[i] = a[i].y;
else
b[i] = a[i].x;
}
sort(b + 1,b + 1 + n);
for(int i = 1;i <= n;i++){
if(m >= b[i])
m -= b[i],ans++;
else
break;
}
}
cout << ans << endl;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...