1 条题解
-
0
本题的目标是最大化 ,满足 。数据范围较小,因此可以简单地枚举两个变量(例如 和 ),然后通过等式求出第三个变量 (如果存在整数解)。在所有可行解中取最大值即可。
另一种方法:使用动态规划,每个状态表示剩余彩带长度,每次选择下一段长度为 、 或 。
#include <iostream> using namespace std; main() { int k[4005], n, a, i, j; fill(k + 1, k + 4005, -1e9); cin >> n; for (; cin >> a;) for (i = a; i <= n; i++) k[i] = max(k[i], k[i - a] + 1); cout << k[n]; }
- 1
信息
- ID
- 6805
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者