首页 > 其他 > 详细

动态规划

时间:2019-12-05 22:06:23      阅读:69      评论:0      收藏:0      [点我收藏+]
#include "cstdio"
#include "iostream"
#include "algorithm"
#include "cstring"
using namespace std;
const int M=1e6+10;
struct node {
    int w[1010];
    int v[1010];
}s[1010];
int dp[M];
int main (){
     int t,n,m,k[1010];
     scanf ("%d",&t);
     while (t--){
         memset(dp,0,sizeof(dp));
         scanf ("%d%d",&n,&m);
             //一共有n个模式 
         for (int i = 1 ; i <= n ;i++){
             scanf ("%d",&k[i]);
             //输入副本所要消耗的体力,也就是物品的体积 
             for (int j = 1 ; j <= k[i];j++){
                 scanf ("%d",&s[i].v[j]);
             }
             //输入打完副本的价值,也就是物品的价值 
             for (int j = 1 ; j <= k[i];j++){
                 scanf ("%d",&s[i].w[j]);
             }
         }
         for(int i = 1 ; i <= n;i++){
             for (int q = m ; q >= 0;q--){
                   for (int j = 1;j <= k[i];j++){
                       if (q >= s[i].w[j])
                     dp[q]=max(dp[q],dp[q-s[i].w[j]]+s[i].v[j]);
                 }
             }
         } 
         printf ("%d\n",dp[m]);
     }
}

打卡,很水的一道分组背包。QAQ

动态规划

原文:https://www.cnblogs.com/AChappy/p/11992135.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!