P14635 题解
libmwlmgrimpl · · 题解
如果两个两个买,买奇数价偶数价之和最小的一定最优。
剩下的就只能买一个了,于是偶数价都没用了,问题变成:有一个商品
剩下的就是简单的贪心了。把所有
最重点的是判
然后就没了。想明白之后真的没多难,代码比 club 短老多了。但我感觉这题场上难度绝对有绿,一是思考难度不亚于去年 T1,二是大样例过水导致很多错解未被 hack。
#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[100005], b[100005], c[100005], sum[100005];
int n, m, ans;
signed main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i] >> b[i];
c[i] = a[i] + b[i];
}
sort(c + 1, c + 1 + n);
sort(a + 1, a + 1 + n);
for (int i = 1; i <= n; i++) sum[i] = sum[i - 1] + a[i];
for (int i = 0; i <= n; i++) {
if (m >= sum[i]) ans = max(ans, i + ((m - sum[i]) / c[1]) * 2);
// 只有在总钱数足够的时候才更新
}
cout << ans << endl;
return 0;
}