社区讨论

subtask(?)#1全WA玄关求调

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@m1z0dts1
此快照首次捕获于
2024/10/07 20:49
去年
此快照最后确认于
2025/11/04 17:40
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e7+7;
struct node{
	int tot,w[5],v[5];
}a[200];
int dp[MAXN];
int main() {
	int n,m;
	cin>>m>>n;
	for(int i=1;i<=n;i++) {
		int x,y,z;
		cin>>x>>y>>z;
		if(z==0) {
			a[i].tot=1;
			a[i].w[1]=x;
			a[i].v[1]=x*y;
		}
		else {
			if(a[z].tot==1) {
				a[z].tot=2;
				a[z].w[2]=a[z].w[1]+x;
				a[z].v[2]=a[z].v[1]+x*y;
			}
			else {
				a[z].w[3]=a[z].w[1]+x;
				a[z].v[3]=a[z].v[1]+x*y;
				a[z].w[4]=a[z].w[2]+x;
				a[z].v[4]=a[z].v[2]+x*y;
				a[z].tot=4;
			}
		}
	}
	for(int i=1;i<=n;i++) {
		for(int j=m;j>=0;j--) {
			for(int k=1;k<=a[i].tot;k++) {
				if(j>=a[i].w[k]) {
					dp[j]=max(dp[j],dp[j-a[i].w[k]]+a[i].v[k]);
				}
			}
		}
	}
	cout<<dp[m];
	return 0;
}

回复

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

正在加载回复...