60分,背包做法
查看原帖
60分,背包做法
1021365
Crab_Tang楼主2023/12/17 08:53
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N=40,V=2e4+10;
int c[N],n,v,dp[N][V],ans;
int main(){
	scanf("%d%d",&v,&n);
	for(int i=1;i<=n;++i)
		scanf("%d",c+i);
	for(int i=1;i<=n;++i)
		for(int j=c[i];j<=v;++j){
			if(dp[i-1][j-c[i]]+c[i]<v)dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+c[i]);
			else dp[i][j]=dp[i-1][j];
		}
	printf("%d",v-dp[n][v]);
	return 0;
}

WA on #1 #4

2023/12/17 08:53
加载中...