题解:P14635 [NOIP2025] 糖果店 / candy(民间数据)
呜呜呜,没过线没法打,幸好能补题。
显然,对于第
我们找出所有糖果中
最后遍历排序后的糖果,尝试用剩余的钱购买额外的单颗糖果,更新出最大答案。
时间很明显是能过得的。
代码实现
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 5;
struct node {
int x, y;
}a[N];
int n, m, ans, minn = 0x3f3f3f3f3f3f3f3f;
inline bool cmp(node a, node b){
return a.x < b.x;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> m;
for(int i = 1; i <= n; i++){
cin >> a[i].x >> a[i].y;
}
for(int i = 1; i <= n; i++){
minn = min(minn, a[i].x + a[i].y);
}
sort(a + 1, a + n + 1, cmp);
ans = 2 * (m / minn);
int cnt = 0;
for(int i = 1; i <= n; i++){
cnt += a[i].x;
if(cnt > m) break;
ans = max(ans, 2 * ((m - cnt) / minn) + i);
}
cout << ans;
return 0;
}
祝大家都能进省选,不进也可以加人品!