样例不过求调!
查看原帖
样例不过求调!
1008513
xiaoshumiao楼主2024/1/13 16:24
#include<cstdio>
#define max(a,b) (a>b?a:b)
using namespace std;
const int MAXW=40005;
int dp[MAXW];
int main() {
  int n,W;
  scanf("%d %d",&n,&W);
  for(int i=1;i<=n;i++) {
  	int v,w,m;
  	scanf("%d %d %d",&v,&w,&m);
  	int k=1;
  	for(int k=1;k<=m;k*=2,m-=k)
  	  for(int j=W;j>=w*k;j--)
  	    dp[j]=max(dp[j],dp[j-w*k]+v*k);
  	if(m>0)
  	  for(int j=W;j>=w*m;j--)
  	    dp[j]=max(dp[j],dp[j-w*m]+v*m);
  }
  printf("%d",dp[W]);
  return 0;
}
2024/1/13 16:24
加载中...