线性dp的反向思考
[ABC281D] Max Multiple
链接:https://www.luogu.com.cn/problem/AT_abc281_d
题面翻译
给定
translated by @liangbowen。
题目描述
非負整数列
-1
と出力してください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
答えを出力せよ。
样例 #1
样例输入 #1
4 2 2
1 2 3 4
样例输出 #1
6
样例 #2
样例输入 #2
3 1 2
1 3 5
样例输出 #2
-1
提示
制約
- 入力はすべて整数
Sample Explanation 1
Sample Explanation 2
この例では -1
と出力します。
解答
#include <iostream>
using namespace std;
typedef long long LL;
const int N = 110;
LL f[N][N][N];
LL a[N];
int n, k, d;
int main()
{
cin >> n >> k >> d;
for (int i = 1; i <= n; i++) cin >> a[i];
memset(f, -1, sizeof f);
f[0][0][0] = 0;
for (int i = 0; i <= n; i++)
for (int j = 0; j <= k; j++)
for (int p = 0; p < d; p++)
{
if (f[i][j][p] == -1) continue; //去除不可行的情况
LL& v = f[i + 1][j + 1][(p + a[i + 1]) % d];
v = max(v, f[i][j][p] + a[i + 1]);
f[i + 1][j][p] = max(f[i + 1][j][p], f[i][j][p]);
}
cout << f[n][k][0] << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通