zoukankan      html  css  js  c++  java
  • uva12563 Jin Ge Jin Qu hao

    题目大意:

    KTV里面有n首歌曲你可以选择,每首歌曲的时长都给出了. 对于每首歌曲,你最多只能唱1遍. 现在给你一个时间限制t (t<=10^9) , 问你在最多t-1秒的时间内可以唱多少首歌曲num , 且最长唱歌时间是多少time (time必须<=t-1) ? 最终输出num+1 和 time+678 即可.

    注意: 你需要优先让歌曲数目最大的情况下,再去选择总时长最长的.

    /*
        两个01背包。
        两个背包大小都为180*n+678,其中一个背包存歌曲数目,另一个存歌曲总长度
        对于劲歌金曲,我们可以把他看成一首体积为1s,价值为678的物品,由于优势显著,所以必选
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int Case,t,n,m,dp[10010],ti[10010],w[60];
    int main(){
        //freopen("Cola.txt","r",stdin);
        scanf("%d",&t);
        while(t--){
            Case++;
            scanf("%d%d",&n,&m);
            memset(dp,0,sizeof(dp));
            memset(ti,0,sizeof(ti));
            for(int i=1;i<=n;i++)scanf("%d",&w[i]);
            for(int i=1;i<=n;i++){
                for(int j=m-1;j>=w[i];j--){
                    if((dp[j-w[i]]+1>dp[j])||(dp[j-w[i]]+1==dp[j]&&ti[j-w[i]]+w[i]>ti[j])){
                        dp[j]=dp[j-w[i]]+1;
                        ti[j]=ti[j-w[i]]+w[i];
                    }
                }
            }
            int ans1=dp[m-1],ans2=ti[m-1];
            printf("Case %d: %d %d
    ",Case,ans1+1,ans2+678);
        }
    }
  • 相关阅读:
    Mvc+三层(批量添加、删除、修改)
    js中判断复选款是否选中
    EF的优缺点
    Git tricks: Unstaging files
    Using Git Submodules
    English Learning
    wix xslt for adding node
    The breakpoint will not currently be hit. No symbols have been loaded for this document."
    Use XSLT in wix
    mfc110ud.dll not found
  • 原文地址:https://www.cnblogs.com/thmyl/p/7404606.html
Copyright © 2011-2022 走看看