zoukankan      html  css  js  c++  java
  • 动态规划(二维背包问题):UVAoj 473

     Raucous Rockers 

    You just inherited the rights to n previously unreleased songs recorded by the popular group Raucous Rockers. You plan to release a set of m compact disks with a selection of these songs. Each disk can hold a maximum of t minutes of music, and a song can not overlap from one disk to another. Since you are a classical music fan and have no way to judge the artistic merits of these songs, you decide on the following criteria for making the selection:

    1. The songs will be recorded on the set of disks in the order of the dates they were written.
    2. The total number of songs included will be maximized.

    Input

    The input consists of several datasets. The first line of the input indicates the number of datasets, then there is a blank line and the datasets separated by a blank line. Each dataset consists of a line containing the values of n, t and m (integer numbers) followed by a line containing a list of the length of n songs, tex2html_wrap_inline43 ordered by the date they were written (Each tex2html_wrap_inline45 is between 1 and t minutes long, both inclusive, and tex2html_wrap_inline49 .)

    Output

    The output for each dataset consists of one integer indicating the number of songs that, following the above selection criteria will fit on m disks. Print a blank line between consecutive datasets.

    Sample Input

    2
    
    10 5 3
    3, 5, 1, 2, 3, 5, 4, 1, 1, 5
    
    1 1 1
    1
    

    Sample Output

    6
    
    1

      题意不清啊,
    1. The songs will be recorded on the set of disks in the order of the dates they were written.

      这句话没有卵用,你一看错就真错了。

      

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 int n,m,t;
     6 int dp[1025][1025],tim[1025];
     7 
     8 int main()
     9 {
    10     int T;
    11     scanf("%d",&T);
    12     while(T--)
    13     {
    14         scanf("%d%d%d",&n,&t,&m);
    15         memset(dp,0,sizeof(dp));
    16         for(int i=1;i<=n;i++){
    17             if(i!=n)
    18                 scanf("%d,",&tim[i]);
    19             else
    20                 scanf("%d",&tim[i]);    
    21         }
    22         
    23         for(int i=1;i<=n;i++)
    24             for(int j=m;j>=1;j--)
    25                 for(int k=t;k>=tim[i];k--)
    26                     dp[j][k]=max(dp[j][k],max(dp[j][k-tim[i]],dp[j-1][t])+1);
    27     
    28         printf("%d
    ",dp[m][t]);
    29         if(T)printf("
    ");    
    30     }
    31         
    32     return 0;
    33 }
    尽最大的努力,做最好的自己!
  • 相关阅读:
    解决Mac下GDB提示签名错误
    hdu 5015 大数量反复类似操作问题/ 矩阵高速幂
    数据运营报表系统思考 一二
    NGUI 3.5教程(二)Label 标签 (Hello world)、多行文本
    STL 源代码剖析 算法 stl_algo.h -- equal_range
    java字符操作获取汉字的拼音以及其它经常使用工具
    SRAM,SDRAM,网卡
    java.lang.NoClassDefFoundError: ognl/PropertyAccessor解决的方法
    纯手工定制西服怎么鉴别
    缝份_百度百科
  • 原文地址:https://www.cnblogs.com/TenderRun/p/5259595.html
Copyright © 2011-2022 走看看