社区讨论
90分求问错误
P14635[NOIP2025] 糖果店参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mik7ni0r
- 此快照首次捕获于
- 2025/11/29 19:31 3 个月前
- 此快照最后确认于
- 2025/11/30 20:55 3 个月前
CPP
#include<bits/stdc++.h>
#define file(a) freopen(#a".in", "r", stdin), freopen(#a".out", "w", stdout)
#define int long long
using namespace std;
int x[100000 + 5], y[100000 + 5];
int32_t main() {
//file(candy);
cin.tie(0)->sync_with_stdio(false);
int n, m; cin >> n >> m;
for (int i = 1; i <= n; ++i)
cin >> x[i] >> y[i], y[i] += x[i];
if (n <= 1000 && m <= 10000) {
static int dp[100000 + 5];
for (int i = 1; i <= n; ++i)
for (int j = y[i]; j <= m; ++j)
dp[j] = max(dp[j], dp[j - y[i]] + 2);
for (int i = 1; i <= n; ++i)
for (int j = m; j >= x[i]; --j)
dp[j] = max(dp[j], dp[j - x[i]] + 1);
cout << dp[m] << endl;
return 0;
}
sort(x + 1, x + n + 1);
sort(y + 1, y + n + 1);
int ans = 0;
for (int i = 1; i <= n; ++i) {
x[i] += x[i - 1];
if (x[i] > m) break;
ans = max(ans, i + (m - x[i]) / y[1] * 2);
}
cout << ans << endl;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...