社区讨论

全RE

P1064[NOIP 2006 提高组] 金明的预算方案参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m1vxurgj
此快照首次捕获于
2024/10/05 17:15
去年
此快照最后确认于
2025/11/04 17:58
4 个月前
查看原帖
rt,求调
CPP
#include "bits/stdc++.h"
#define int long long
using namespace std;
struct node{
	int v, p, q;
} a[100];
int n, m;
int dp1[5000005], dp2[5000005];
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= m; i++){
		cin >> a[i].v >> a[i].p >> a[i].q;
		a[i].p *= a[i].v;
	}
	for (int i = 1; i <= m; i++)
		if (a[i].q == 0){
			for (int j = 1; j <= 5000000; j++) dp2[i] = 0;
			for (int j = a[i].v; j <= n; j++)
				dp2[j] = dp1[j - a[i].v] + a[i].p;
			for (int j = 1; j <= m; j++)
				if (a[j].q == i)
					for (int k = n; k >= a[i].v + a[j].v; k++)
						dp2[k] = max(dp2[k], dp2[k - a[j].v] + a[j].p);
			for (int j = a[i].v; j <= n; j++)
				dp1[j] = max(dp1[j], dp2[j]);
		}
		cout << dp1[n];
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...