社区讨论

求调

P9468[EGOI 2023] Candy / 糖果参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@miqzrc1w
此快照首次捕获于
2025/12/04 13:24
3 个月前
此快照最后确认于
2025/12/04 19:16
3 个月前
查看原帖
CPP
#include<iostream>
#include<algorithm>
#define int long long
int n, f, t, a[110], sort[110], sum, fr_sum[110], ans = 1e15, dp[110][110][10010];
signed main()
{
	std::cin >> n >> f >> t;
	for (int i = 1; i <= n; i++)
	{
		std::cin >> a[i];
		fr_sum[i] = fr_sum[i - 1] + a[i];
		sort[i] = a[i];
	}
	std::sort(sort + 1, sort + 1 + n);
	for (int i = 0 ; i < f; i++)
	{
		sum += sort[n - i];
	}
	if (sum < t)
	{
		std::cout << "NO";
		return 0;
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= f; j++)
		{
			dp[i][j][0] = fr_sum[j];
			if (dp[i][j][0] >= t)
			{
				ans = 0;
			}
			for (int k = 1; k <= n * (n + 1) / 2; k++)
			{
				dp[i][j][k] = std::max(dp[i][j][k], dp[i - 1][j][k]);
				for (int p = 1; p < j; p++)
				{
					if (k - i + p < 0)
					{
						continue;
					}
					if (dp[i - 1][j - 1][k - i + p] + a[i] > dp[i][j][k])
					{
						dp[i][j][k] = dp[i - 1][j - 1][k - i + p] + a[i];
					}
				}
				if (dp[i][j][k] >= t)
				{
					ans = std::min(ans, k);
				}
			}
		}
	}
	std::cout << ans;
	return 0;
}
代码如上
#subtask1 WA on #9

回复

1 条回复,欢迎继续交流。

正在加载回复...