zoukankan      html  css  js  c++  java
  • 【hdu1712】分组背包(每组最多选1个)

    【分组背包】

    【题意】ACboy要开始选课了,上一门课能够获得的收益和他上这门课的时间是有关的,然后给你若干门课,让你帮他进行选课,
    每一门课自然是只能选择一个课程时长,问你如何选择,才能使ACboy获得的受益最大。

    for(k=1;k<=K;k++)
      for(int v=V;v>=0;v--)
        for(int i=item in group k)
          f[v]=max(f[v],f[v-c[i]+w[i]);
    保证用到的都是k-1所更新的而不是k所更新的。

     

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 #include<queue>
     7 #include<vector>
     8 using namespace std;
     9 
    10 const int N=110;
    11 int n,m,a[N][N],f[N];
    12 
    13 int maxx(int x,int y){return x>y ? x:y;}
    14 
    15 int main()
    16 {
    17     freopen("a.in","r",stdin);
    18     while(1)
    19     {
    20         scanf("%d%d",&n,&m);
    21         if(!n && !m) return 0;
    22         for(int i=1;i<=n;i++)
    23             for(int j=1;j<=m;j++)
    24             {
    25                 scanf("%d",&a[i][j]);
    26             }
    27         memset(f,0,sizeof(f));
    28         for(int i=1;i<=n;i++)
    29             for(int j=m;j>=1;j--)
    30                 for(int k=1;k<=j;k++)
    31                 {
    32                     f[j]=maxx(f[j],f[j-k]+a[i][k]);
    33                 }
    34         printf("%d
    ",f[m]);
    35     }
    36     return 0;
    37 }

     

  • 相关阅读:
    get(0)??
    抽象类中。。
    matlab函数
    unity_快捷键
    unity_ UI
    关于博客园使用
    survival shooter
    第七次团队作业:Alpha冲刺(3/10)
    第七次团队作业:Alpha冲刺(2/10)
    第七次团队作业:Alpha冲刺(1/10)
  • 原文地址:https://www.cnblogs.com/KonjakJuruo/p/5971369.html
Copyright © 2011-2022 走看看