社区讨论

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 条回复,欢迎继续交流。

正在加载回复...