• UVA 12563 "Jin Ge Jin Qu hao" (背包)


    传送门

    debug了好一会,突然发现,输出错了,emmm.........

    明天再写debug历程;

    (PS:ipad debug是真的繁琐)

    题意:

      

    题解:

      尽管题干中给的 t 的范围很大,但是 t ≤ 50*180+678;

    1 int dp[maxn];///dp[i]:恰好唱i分钟时的最大曲目个数

    AC代码:

     1 #include<bits/stdc++.h>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 #define memF(a,b,n) for(int i=0;i <= n;a[i++]=b);
     6 const int maxn=1e5+50;
     7 
     8 int n,T;
     9 int t[60];
    10 int dp[maxn];
    11 
    12 void Solve()
    13 {
    14     memF(dp,-1,T);
    15     dp[0]=0;
    16     for(int i=1;i <= n;++i)
    17     {
    18         for(int j=T-1;j >= t[i];--j)
    19         {
    20             if(dp[j-t[i]] != -1)
    21                 dp[j]=max(dp[j],dp[j-t[i]]+1);
    22         }
    23     }
    24     int ans=*max_element(dp,dp+T-1);
    25     for(int i=T-1;i >= 0;--i)
    26         if(dp[i] == ans)///查找曲目数==ans的最长时间
    27         {
    28             printf("%d %d
    ",dp[i]+1,i+678);
    29             return ;
    30         }
    31 }
    32 int main()
    33 {
    34     int test;
    35     scanf("%d",&test);
    36     for(int kase=1;kase <= test;++kase)
    37     {
    38         scanf("%d%d",&n,&T);
    39         for(int i=1;i <= n;++i)
    40             scanf("%d",t+i);
    41 
    42         printf("Case %d: ",kase);
    43         Solve();
    44     }
    45     return 0;
    46 }
    View Code

    坑:注意读题,曲目数的优先级高于时间;

  • 相关阅读:
    SpringBoot第十七篇:定时任务
    20年研发管理经验谈(十)
    SpringBoot第十六篇:自定义starter
    20年研发管理经验谈(九)
    20年研发管理经验谈(八)
    20年研发管理经验谈(七)
    SpringBoot第十五篇:swagger构建优雅文档
    CSS聊天气泡
    Java单例模式
    Java观察者模式
  • 原文地址:https://www.cnblogs.com/violet-acmer/p/10961558.html
Copyright © 2020-2023  润新知