题解:P14635 [NOIP2025] 糖果店 / candy
NOIP场外选手
4h成绩(官方数据):100+32+0+20=152
好后悔CSP-S没有注意细节挂分了
solution
显然我们会想到一个很简单的思路,将一种糖果的两个价格捆绑起来,不断地取 \(x_i+y_i\) 最小的那个
但是还会剩下一些钱,考虑买其他糖果的x
只能取x,如果取x和y的话一定没有最小的\((x+y)\)更优
然后将 \(x\) 从小到大排序,再依次枚举要买多少个糖果的 \(x\)。
最后时间复杂度 O(nlogn),可以通过此题。
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
long long n, m, minn = 2e14, maxn = 0;
long long a[N], b;
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i] >> b;
minn = min(minn, a[i] + b);
}
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; i++) {
a[i] += a[i-1];
}
for (int i = 0; i <= n; i++) {
if (m >= a[i])
maxn = max(maxn, i + (m - a[i]) / minn * 2);
}
cout << maxn;
return 0;
}
"——敬不完美的明天"
"——敬不再沉默的历史,热烈而勇敢的奔赴,和通往所以未来的旅途"
"——敬盛会的邀请函,所有的谎言,和唯一的真相"
"——敬坚忍的岁月,每个悲伤的夜晚,和终将到来的黎明"
"——敬我的过去,现在,未来...和年少时至死不渝的梦"
时钟的指针转过一圈又一圈,但每一天的开始和结束,永远落在「前进」的十二点

浙公网安备 33010602011771号