求助,被hack搞G了
查看原帖
求助,被hack搞G了
762086
Francium_楼主2024/7/21 14:18

rt,两个都错,代码如下:

#include <bits/stdc++.h>
using namespace std;
int n, m, k, f[1205][1205], v1[1204], v2[1210], c[2104], t[2104];
string ans[1205][1205];

int main() {
	cin >> m >> k >> n;
	for (int i = 1; i <= n; i++)
		cin >> v1[i] >> v2[i] >> c[i], t[i] = i;
	for (int i = n; i >= 1; i--) {
		for (int j = m; j >= v1[i]; j--) {
			for (int o = k; o >= v2[i]; o--) {
			/*	if (f[j - v1[i]][o - v2[i]] + c[i] == f[j][o]
				        && ans[j - v1[i]][o - v2[i]] + char(t[i]) < ans[j][o])
					cout << endl << ":" << t[i] << " " << j << " " << o << endl;*/
				if (f[j - v1[i]][o - v2[i]] + c[i] > f[j][o] || (f[j - v1[i]][o - v2[i]] + c[i] == f[j][o]
				        && ans[j - v1[i]][o - v2[i]] + char(t[i]) < ans[j][o]) )
					f[j][o] = max(f[j][o], c[i] + f[j - v1[i]][o - v2[i]]), ans[j][o] = ans[j - v1[i]][o - v2[i]] + char(t[i]);
			}
		}
	}
	cout << f[m][k] << "\n";
	for (int i = ans[m][k].size() - 1; i >= 0 ; i--)
		cout << int(ans[m][k][i]) << " ";
	return 0;
}
2024/7/21 14:18
加载中...