poj 2063 多次完全背包

来源:互联网 发布:sm3算法 编辑:程序博客网 时间:2024/05/18 14:45

每年做一次完全背包,累加结果

#include<stdio.h>#include<string.h>int dp[1000000],w[11],v[11];int sum,n,y;int max(int a,int b){return a>b?a:b;}void DP(){int i,j,V=sum/1000;for(i=0;i<=V;i++) dp[i]=0;for(i=0;i<n;i++)for(j=w[i];j<=V;j++)dp[j]=max(dp[j],dp[j-w[i]]+v[i]);sum+=dp[V];}int main(){    int t,i;scanf("%d",&t);while(t--){scanf("%d%d",&sum,&y);scanf("%d",&n);for(i=0;i<n;i++)  scanf("%d%d",&w[i],&v[i]),w[i]/=1000;while(y--)DP();printf("%d\n",sum);}return 0;}

  

原创粉丝点击