首页 > 其他分享 >Jin Ge Jin Qu - UVa 12563

Jin Ge Jin Qu - UVa 12563

时间:2023-05-11 21:11:59浏览次数:49  
标签:Case 金曲 kase Jin int Ge 劲歌 UVa

例题9-5 劲歌金曲(Jin Ge Jin Qu [h]ao, Rujia Liu's Present 6, UVa 12563)

#dp #二维dp #01背包 #T3

如果问一个麦霸:“你在KTV里必唱的曲目有哪些?”得到的答案通常都会包含一首“神曲”:古巨基的《劲歌金曲》。

为什么呢?一般来说,KTV不会在“时间到”的时候鲁莽地把正在唱的歌切掉,而是会等它放完。例如,在还有 \(15\) 秒时再唱一首 \(2\) 分钟的歌,则实际上多唱了 \(105\) 秒。但是融合了 \(37\) 首歌曲的《劲歌金曲》长达 \(11\) 分 \(18\) 秒(5),如果唱这首,相当于多唱了\(663\)秒!

假定你正在唱KTV,还剩 \(t\) 秒时间。你决定接下来只唱你最爱的 \(n\) 首歌(不含《劲歌金曲》)中的一些,在时间结束之前再唱一个《劲歌金曲》,使得唱的总曲目尽量多(包含《劲歌金曲》),在此前提下尽量晚的离开KTV。

输入\(n(n≤50),t(t≤10^9)\)和每首歌的长度(保证不超过 \(3\) 分钟),输出唱的总曲目以及时间总长度。输入保证所有 \(n+1\) 首曲子的总长度严格大于 \(t\)。

Sample Input

2
3 100
60 70 80
3 100
30 69 70

Sample Output

Case 1: 2 758
Case 2: 3 777

思路

求能唱的数量最多, 且最多时求时间最长的, 显然是二维DP和这题很像 [[宠物小精灵之收服]]。

因为最后肯定是留至少1秒点金曲是最优, 故这里直接把输入的t减去1, 输出时判断一下, 如果是-1说明一个都点不了, 都输出0, 否则就在输出时把金曲加上。

其他就是正常的01背包了。
先求数量最多的, 然后逆序遍历求用时最多的。
滚动数组优化
状态表示: f[j] 恰好用时为j的最优选法
状态计算: f[j] = max(f[j], f[j - t] + 1)

注意全初始化为 -0x3f 负无穷, 因为这里求的是恰好为j。

题目给的t最大是1e9, 但实际上用不到这么多, 题目有说一首歌最多3分钟, 故总时间最大也就 180*n + 678

代码

const int N = 55, T = 1e4 + 10;
int a[T];

int n, m;

int main()
{
    int K;
    cin >> K;
    for (int kase = 1; kase <= K; kase++)
    {
        mem(a, -0x3f);
        a[0] = 0;
        cin >> n >> m;
        m -= 1;
        int res = 0;
        for (int i = 1; i <= n; i++)
        {
            int t;
            cin >> t;
            for (int j = m; j >= t; j--)
            {
                a[j] = max(a[j], a[j - t] + 1);
            }
        }

        for (int i = 0; i <= m; i++)
            res = max(res, a[i]);
        int time = 0;
        for (int i = m; i >= 0; i--)
            if (a[i] == res)
            {
                time = i;
                break;
            }
        if (m != -1)
        {
            printf("Case %d: %d %d\n", kase, res + 1, time + 678);
        }
        else
            printf("Case %d: %d %d\n", kase, 0, 0);
    }
}

标签:Case,金曲,kase,Jin,int,Ge,劲歌,UVa
From: https://www.cnblogs.com/edwinaze/p/17392249.html

相关文章

  • getPhysicalNumberOfCells读取excel表格数据,清除空行后代码仍然识别空行,(已解决)
     表格只有几十行数据,但是getPhysicalNumberOfCells读取时还有800多行,原因在于之前把表格数据拓展到了800行,清除数据时,表格的样式为更改,可以尝试使用格式刷复制空行格式刷到错误空行上但是我试了没有用,反而还多了几十行,然后尝试用代码判断空行,只有格式没有数据的空行全部删除,......
  • Python range function All In One
    PythonrangefunctionAllInOnerange函数函数语法range(stop)range(start,stop[,step])参数说明:start:计数从start开始。默认是从0开始。例如range(5)等价于range(0,5)stop:计数到stop结束,但不包括stop。例如:range(0,5)是[0,1,2,3,4]没有......
  • questions_03 【http://127.0.0.1:8000/%5Emanage/(%3FP1%5Cd+)/dashboard/】项目id参
    【原因背景】当我们在点击进入具体项目的时候,根据我们所写的url,中间应该包含我们的项目id,当不知道什么原因可以进入项目,但是id是乱码的【原因分析】在查看相关资料后发现是我们在写path的时候出现的问题:Django2.2.x之后的版本path:用于普通路径,不需要自己手动添加正则首位......
  • 判断软件的闲置时间GetLastInputInfo
    //GetLastInputInfo是检测系统输入的,应用到某个程序中不合适!此问题有二种解法来监控输入消息:1.用线程级HOOK,钩上MOUSEHOOK与KEYBOARDHOOK2.在Application.OnMessage中做处理显然,用第2种方法比较方便!众所周知,键盘与鼠标消息都是队列消息,需要经过消息队列后经过一些处理,再发往......
  • 关于el-progress percentage的值超100以及处理后端返回小数转换报错的处理
    在开发大屏幕数据项目的时候,在el-table中用el-progress展示效率,由于后端返回的是小数,前端需要把0.555555555展示成50%的格式(不展示小数点后的数字),我刚开始写控制台一直报错,用Number()转化了数值还是在控制台报percentage期望的是‘number’,但是捕抓到的是'String'的错误。最后这......
  • swagger
    https://juejin.cn/post/6854573209560285198最近SpringFox3.0.0发布了,距离上一次大版本2.9.2足足有2年多时间了。可能看到这个名字,很多读者会有点陌生。但是,只要给大家看一下这两个依赖,你就知道了!<dependency><groupId>io.springfox</groupId><artifactId>sprin......
  • 【键值-对象池】GenericKeyedObjectPool
    目录GenericKeyedObjectPool1.依赖2.配置3.连接对象类4.对象池工厂5.使用GenericKeyedObjectPool​ 通用池化框架commons-pool2实践,其中提到了可以池化一个对象和一组对象,一个对象用到了GenericObjectPool这个类,一组对象用到了GenericKeyedObjectPool这个类。顾名思义,键值......
  • element ui的el-upload上传组件中使用el-image的图片预览
    问题想在elementui的el-upload上传组件中使用el-image的图片预览,这样就可以放大和缩小还有多张图片切换因为el-upload提供的是使用对话框查看图片,不能放大缩小还不能左右切换说明在el-image组件内的预览功能是使用的el-image-viewer这个小组件实现的,所以我们直接导入调用这......
  • Memory Usage of <PID>
    RSS:"ResidentSetSize"(常驻集大小)表示进程当前在物理内存中实际占用的空间大小,以KB为单位。Note:由于Linux使用页面(page)作为内存管理的基本单位,因此RSS的值通常是页面大小(通常为4KB)的倍数。因此,top命令中显示的RSS值可能略微大于实际的内存使用量。1.toptop2.psps......
  • nginx 10061: No connection could be made because the target machine actively ref
    nginx10061:Noconnectioncouldbemadebecausethetargetmachineactivelyrefusedit nginx重载配置一直有些不生效,查看后,发现nginx有4个,全部关闭掉,再重开nginx,正常了nginx.exe-squit,可以把正常的nginx退出掉,其他的nginx,任务管理器强制关闭掉startnginx开启nginx,o......