poj 1170 DP

来源:互联网 发布:win10自动安装软件 编辑:程序博客网 时间:2024/06/05 19:27
#include<cstdio>#include<cstring>#define MIN(x,y) ((x)>(y)?(y):(x))int dp[6][6][6][6][6];int n[100],v[100],sym[100],price[100];int d[100][100];int tot;int main(){int num;scanf("%d",&num);for(int i=0;i<num;i++){int lo;scanf("%d%d%d",&lo,&n[i],&v[i]);sym[lo]=i;}scanf("%d",&tot);for(int i=0;i<tot;i++){int q,p;scanf("%d",&q);while(q--){int lo,num1;scanf("%d%d",&lo,&num1);d[i][sym[lo]]=num1;}scanf("%d",&p);price[i]=p;}dp[0][0][0][0][0]=0;for(int i=0;i<=n[0];i++)for(int j=0;j<=n[1];j++)for(int k=0;k<=n[2];k++)for(int l=0;l<=n[3];l++)for(int m=0;m<=n[4];m++){dp[i][j][k][l][m]=i*v[0]+j*v[1]+k*v[2]+l*v[3]+m*v[4];for(int t=0;t<tot;t++){if(i>=d[t][0]&&j>=d[t][1]&&k>=d[t][2]&&l>=d[t][3]&&m>=d[t][4]){dp[i][j][k][l][m]=MIN(dp[i][j][k][l][m],dp[i-d[t][0]][j-d[t][1]][k-d[t][2]][l-d[t][3]][m-d[t][4]]+price[t]);}} }printf("%d\n",dp[n[0]][n[1]][n[2]][n[3]][n[4]]);return 0;}

0 0
原创粉丝点击