社区讨论
求调
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
#subtask1 WA on #9
回复
共 1 条回复,欢迎继续交流。
正在加载回复...