hdu 3535

来源:互联网 发布:网络疯传婚礼新娘吃 编辑:程序博客网 时间:2024/05/22 08:16

以前不会做的题目,看完分组背包后突然就会做了。

#include<iostream>using namespace std;int dp[105][105];int cost[105],value[105];int maxi(int a,int b){if(a>b)return a;else return b;}int main(){int n,t,i,j,m,s,k;while(cin>>n>>t){for(i=0;i<=t;i++)dp[0][i]=0;for(i=1;i<=n;i++){cin>>m>>s;for(j=1;j<=m;j++)cin>>cost[j]>>value[j];if(s==0){for(k=0;k<=t;k++)dp[i][k]=-10000000;for(j=1;j<=m;j++)for(k=t;k>=cost[j];k--){dp[i][k]=maxi(dp[i][k],dp[i][k-cost[j]]+value[j]);dp[i][k]=maxi(dp[i][k],dp[i-1][k-cost[j]]+value[j]);}}if(s==1){for(k=0;k<=t;k++)dp[i][k]=dp[i-1][k];for(j=1;j<=m;j++)for(k=t;k>=cost[j];k--)dp[i][k]=maxi(dp[i][k],dp[i-1][k-cost[j]]+value[j]);}if(s==2){for(k=0;k<=t;k++)dp[i][k]=dp[i-1][k];for(j=1;j<=m;j++)for(k=t;k>=cost[j];k--){dp[i][k]=maxi(dp[i][k],dp[i][k-cost[j]]+value[j]);dp[i][k]=maxi(dp[i][k],dp[i-1][k-cost[j]]+value[j]);}}}dp[n][t]=maxi(dp[n][t],-1);cout<<dp[n][t]<<endl;}return 0;}


原创粉丝点击