求优化
  • 板块灌水区
  • 楼主AC_HR
  • 当前回复3
  • 已保存回复3
  • 发布时间2025/1/20 15:11
  • 上次更新2025/1/20 17:35:46
查看原帖
求优化
688859
AC_HR楼主2025/1/20 15:11

MLE力

题目:有 n 件货物,它们的重量分别为 W 1 ​ ,W 2 ​ ,...,W n ​ ,价值分别为 P 1 ​ ,P 2 ​ ,...,P n ​

有一辆载重为 V 的货车,司机想从这 n 件货物中选取若干件,使得货车 满载(即所载货物重量之和恰好为 V )而归。求:车上货物的总价值最大为多少?

范围:1≤V≤100000 ,1≤n≤100,1≤W≤10000 ,1≤P≤1000

#include<bits/stdc++.h>
using namespace std;
int v,n,s[101],w[101],f[101][100001];
int main(){
	scanf("%d%d",&v,&n);
	for(int i=1;i<=n;i++) scanf("%d%d",&w[i],&s[i]);
	for(int i=0;i<=n;i++)
		for(int j=1;j<=v;j++) f[i][j]=-1;
    f[1][1]=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=v;j++)
			if(j>=w[i]){
				if(f[i-1][j-w[i]]==-1) f[i][j]=f[i-1][j];
				else f[i][j]=max(f[i-1][j-w[i]]+s[i],f[i-1][j]);
			}	
			else f[i][j]=f[i-1][j];
	}
	if(f[n][v]==-1) printf("0");
	else printf("%d",f[n][v]);
	return 0;
}
2025/1/20 15:11
加载中...