P1759挂了,60分
  • 板块灌水区
  • 楼主Lian_zy
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/29 19:20
  • 上次更新2024/3/29 19:48:27
查看原帖
P1759挂了,60分
923248
Lian_zy楼主2024/3/29 19:20

怎么回事,先不考虑前面尽量小方案的问题

#include <string>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int maxn = 2e3 + 10;
string ans[maxn][maxn];
int n, m, v, a[maxn], b[maxn], c[maxn], dp[maxn][maxn];
int main() {
	scanf("%d %d %d", &m, &v, &n);
	for (int i = 1; i <= n; i++) {
		scanf("%d %d %d", a + i, b + i, c + i);
		for (int j = m; j >= a[i]; j--) {
			for (int k = v; k >= b[i]; k--) {
				if (dp[j - a[i]][k - b[i]] + c[i] > dp[j][k]) {
					ans[j][k] += to_string(i) + " ";
					dp[j][k] = dp[j - a[i]][k - b[i]] + c[i];
				} 
			}
		}
	}
	printf("%d\n", dp[m][v]);
	cout << ans[m][v] << endl;
	return 0;
}
2024/3/29 19:20
加载中...