社区讨论

诸位硕佬们帮帮忙!60分求解

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

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@mi6ome23
此快照首次捕获于
2025/11/20 08:17
4 个月前
此快照最后确认于
2025/11/20 08:17
4 个月前
查看原帖
CPP
```cpp
#include #include using namespace std; int w[200005][4],v[200005][4]; int an=0; int m,n; int dp[200005]; int main(){ memset(w,0,sizeof(w)); memset(v,0,sizeof(v)); memset(dp,0,sizeof(dp)); cin>>n>>m; int i,j,k,l; int v0,p,q; for(i=1;i<=m;i++){ cin>>v0>>p>>q; if(q==0){ an++; w[an][1]=v0; v[an][1]=v0p; } else{ w[q][0]++; w[q][w[q][0]+1]=v0; v[q][0]++; v[q][v[q][0]+1]=v0p; } } dp[0]=0; int k1,k2,k3,k4,k5; for(i=1;i<=an;i++){ for(j=n;j>=w[i][1];j--){ k3=0;k4=0;k5=0; k1=dp[j]; k2=dp[j-w[i][1]]+v[i][1];
CPP
		if(j>=w[i][1]+w[i][2])
			k3=dp[j-w[i][1]-w[i][2]] +v[i][1]+v[i][2];
			
		if(j>=w[i][1]+w[i][3])
			k4=dp[j-w[i][1]-w[i][3]] +v[i][1]+v[i][3];
		
		if(j>=w[i][1]+w[i][2]+w[i][3])
			k5=dp[j-w[i][1]-w[i][2]-w[i][3]] +v[i][1]+v[i][2]+v[i][3];
					
				 dp[j]=max(k1,max(k2,max(k3,max(k4,k5))));
	}
}
cout<<dp[n];
return 0;
}
CPP

回复

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

正在加载回复...