dp简单模板题代码求调
  • 板块灌水区
  • 楼主yyyymh
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/9/25 09:51
  • 上次更新2023/10/27 10:02:56
查看原帖
dp简单模板题代码求调
499746
yyyymh楼主2022/9/25 09:51
#include <bits/stdc++.h>
using namespace std;
int v[1005],w[1005],vv[10005],ww[10005],dp[40000005];
int main(){
	int n,m,o,q,cnt=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		scanf("%d%d%d",&v[i],&w[i],&o);
		q=1;
		if(o==-1||o==1){
			cnt+=1;
			vv[cnt]=v[i],ww[cnt]=w[i];
			continue;
		}
		else if(o==0){
			o=m/v[i];
		}
		while(q<=o){
			cnt+=1,o-=q;
			vv[cnt]=v[i]*cnt,ww[cnt]=w[i]*cnt;
			q*=2;
		}
		if(o>0){
			cnt+=1;
			ww[cnt]=o*w[i],vv[cnt]=o*v[i];
		}
	}
	for(int i=1;i<=cnt;i++){
		for(int j=m;j>=vv[i];j--){
			dp[j]=max(dp[j],dp[j-vv[i]]+ww[i]);
		}
	}
	cout<<dp[m];
	return 0;
}

题目地址:acwing

刚学dp,不知道哪里不对,麻烦大家了

2022/9/25 09:51
加载中...