01背包re了
查看原帖
01背包re了
339728
末然Ender楼主2020/12/16 22:01
#include <bits/stdc++.h>
using namespace std;
int v,m/*容量*/,n/*物品数量*/,w[1010]/*物品体积*/,c[1010]/*物品价值*/,dp[110][1010];//dp~~~~~//

int main(){
	cin>>v>>m>>n;
	for(int i=1;i<=n;i++){
		cin>>w[i]>>c[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(w[i]>j){
				dp[i][j]=dp[i-1][j];
			}else{
				dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+c[i]);
			}
		}
	}
	if(dp[n][m]<v)cout<<"Impossible";
    else cout<<dp[n][m]-v;
	return 0;
}

求救求救

2020/12/16 22:01
加载中...