劲歌金曲(dp)

动态规划——劲歌金曲 题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4008 题意: 给n首歌和一个时间t,最后一首歌必须是劲歌金曲(这首歌的时间是678s),要求t时间内唱的歌的数目最多的前提下使唱的时间最大。 01背包问题,只不过决策时有两个条件, 阅读详情

两层动态规划,需要满足在数量最多的情况下时间最长

第一层数量最多: 和01背包相似,状态d(i,j)是在面对第i首歌还剩j时间时所能唱的最多歌曲数,得出状态递推方程d(i,j)=max(d(i+1,j),d(i+1,j-len[i])),用递推法得出答案d(1,t)

第二层时间最多 :注意是在数量最多的情况下,递推方程和数量差不多

#include <iostream>

using namespace std;

int d[101][100000];  //d(i,j)在面对第i首歌还剩j时间时所能唱的最多歌曲数
int tt[101][10000];  //tt(i,j)在面对第i首歌还剩j时间时所能唱的最长时间(在歌曲数最多的情况下的最长时间)
int max1(int x,int y)
{
    return x>y?x:y;
}
int main()
{
    int m;
    cin>>m;
    int n,t;
    int num=0;
    while(m--)
    {
        num++;
        cin>>n>>t;
        int len[1001];
        for(int i=1; i<=n; i++)
            cin>>len[i];
        for(int i=0; i<=t; i++)  //初始化d[n+1][1...t],用于递推第一层d[n][1...t]的赋值
        {
            int temp=n+1;
            d[temp][i]=1;
            tt[temp][i]=678;         
        }
        for(int i=n; i>=1; i--)
            for(int j=1; j<=t; j++)
            {
                int temp=j-len[i];
                if(j>len[i])
                {

                    d[i][j]=max1(d[i+1][j],d[i+1][temp]+1);

                    //在数量最大的情况下取最长时间

                    if(d[i+1][j]>d[i+1][temp]+1)    
                        tt[i][j]=tt[i+1][j];
                    else if(d[i+1][j]<d[i+1][temp]+1)
                        tt[i][j]=tt[i+1][temp]+len[i];
                    else                                                      //如果两种情况数量相等,取时间长的
                        tt[i][j]=max1(tt[i+1][j],tt[i+1][temp]+len[i]);
                }
                else
                {
                    if(i==n)               //区分是不是第n首歌,如果是,j<=len[i]时直接选择唱劲歌金曲,否则不唱当前的歌
                    {
                        d[i][j]=1;
                        tt[i][j]=678;
                    }
                    else
                    {
                        d[i][j]=d[i+1][j];
                        tt[i][j]=tt[i+1][j];
                    }
                }
            }
        cout<<"Case "<<num<<": "<<d[1][t]<<" "<<tt[1][t]<<endl;
    }
    return 0;
}
MATLAB演示元胞自动机算法 一、元胞自动机理论 元胞自动机与格子理论是一个非常好的模型,许多复杂的问题都可以通过它来建立模型,下面就简要介绍一下。 元胞自动机 实质上是定义在一个具有离散、有限状态的元胞组成的元胞空间上,并按照一定的局部规则,在离散的时间维度上演化的动力学系统。 元胞 元胞又可称为单元、细胞,是元胞自动机的最基本的组成部分。 元胞具有以下特点: 元胞自动机最基本的单元。 元胞有记忆贮存状态的功... 阅读详情

相关推荐

MATLAB实战:64QAM通信系统仿真全流程解析(附误码率优化技巧)

本文提供了一份完整的64QAM通信系统MATLAB仿真实践指南。从系统架构设计、发射端格雷码映射与脉冲成形,到信道建模、接收端同步与均衡,详细解析了全链路实现流程。文章重点分享了误码率曲线与理论值偏差的排查清单和深度优化技巧,帮助工程师构建工业级精度的仿真模型,解决高阶调制系统仿真的核心难题。

jenkins8butler的博客 404

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

原题链接:https://vjudge.net/problem/UVA-12563 分类:0-1背包 备注:0-1背包变形。 注意:千万不要包括给的时间t,因为劲歌金曲是必须要唱的! #include<bits/stdc++.h> using namespace std; const int maxt=50*180+678; int T,t,n,a[55],dp[55][maxt+5]; int main(void){ // freopen("in.txt","r",stdin);

TK_wang_的博客 580

深度探索:非线性随机森林(Nonlinear Random Forest,NL-RF)原理及应用

非线性随机森林(NL-RF)旨在通过结合集成方法与高级技术来捕捉和建模数据中的非线性关系,从而改善传统随机森林在处理复杂非线性数据结构时的表现。

qq_51320133的博客 2067

UVA 12563 (劲歌金曲)(多条件最优的动态规划问题)(01背包

UVA 12563 (劲歌金曲)(多条件最优的动态规划问题)(01背包) 依照题意可知,首要条件是:在t-1的时间内唱最多的歌曲数目,次要条件是:在不超过t-1的时间内唱的最久。 可以用dp_1[i]去表示在 i 时间内能唱的最多曲数。 用dp_2[i]去表示在 i 时间内能唱的最久时间。 状态转移的决策思想为: 1、如果在 j 时间内唱当前歌曲比不唱当前歌曲有着更大的歌曲数,那么同时更新dp_1和dp_2的值。 2、如果在 j 时间内唱当前歌曲和不唱当前歌曲有着一样的歌曲数,那么如果唱当前歌曲有着更长的唱

WedsonLin的博客 415

ZEMAX优化方法---【Zemax学习】

在光学系统自动设计中,优化设计是光学设计中的重要阶段,也是ZEMAX软件的核心功能,涉及评价函数、权因子、阻尼因子等重要概念。在常用的阻尼最小二乘法优化设计的基础上,ZEMAX给我们提供了三种优化选择:Optimization(局部优化)、Global Search(全局优化)和 Hammer Optimization(锤形优化)。

yh的博客 4448

S/4HANA 迁移前的必修课:用 SCMON 找出沉睡的自定义代码

SAP S/4HANA迁移项目中,SCMON工具能有效解决历史代码评估难题。通过监控ABAP对象调用情况,SCMON可识别40-60%处于"沉睡"状态的自定义代码。配置时需注意监控周期(建议3-6个月)和数据保留期(建议1年),并配合Time Slices功能进行时段分析。工具导出的调用数据可与测试覆盖率对比,帮助决策代码迁移优先级。实际应用中需结合业务场景,建议与SUSG工具配合使用,并保持持续监控。SCMON虽不能完全替代人工判断,但其提供的客观数据能显著提升迁移决策的科学性,建议在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 291

UVa-12563 劲歌金曲

题目 https://vjudge.net/problem/Uva-12563 给出n首歌和KTV的剩余时间T,因为KTV不会在时间到的时候立刻把歌切掉,而是会等它放完.而《劲歌金曲》长达678秒,因此你可以在从你喜欢的歌中选择一些,在时间结束前再唱一首《劲歌金曲》. 给出一种策略,使得唱的歌曲尽可能的多,在此前提下,使得唱的时间尽可能的长. 分析 和一般的01背包相比,本题有歌曲数目和歌曲长度两...

weixin_30755709的博客 238

Python 爬虫实战:Boss直聘 Python 岗位招聘数据爬取

本文介绍了一个Python爬虫项目,用于抓取Boss直聘平台的Python岗位招聘数据并进行可视化分析。项目采用requests库发送POST请求,通过抓包分析获取JSON接口,绕过HTML解析直接获取结构化数据。主要内容包括: 接口分析:找到关键POST接口,解析请求头和JSON参数格式 环境准备:安装requests/pandas/matplotlib/pyecharts等依赖库 核心实现: 手动获取登录Cookie 构建请求头和城市代码映射 实现分页抓取职位列表数据 项目特色在于直接解析JSON接口而

u014481728的博客 297

劲歌金曲

劲歌金曲 0-1背包 #include <cstdio> #include <cstring> #include <iostream> using namespace std; const int JGJQ=11*60+18; const int maxn=50,maxt=(maxn*3*60)+JGJQ+1; int t[maxn+1],f[maxn+1]...

weixin_30558305的博客 178

02 HCM CPI SF集成-组织集成(一)

将员工主数据和组织数据从SAP Successfactors Employee CentraI复制到SAPERP或SAP S/4HANA,SAP SF CPI HCM集成

SAP CPI 129

ArcGIS JSAPI 高级教程 - 添加多个 box 立方体 - 通过顶点、索引、UV 自定义每个 box、每个面不同颜色

ArcGIS JSAPI 高级教程 - 添加多个 box 立方体 - 通过顶点、索引、UV 自定义每个 box、每个面不同颜色。

非科班Java出身GISer的博客 400

12563 劲歌金曲

##动态规划,01背包 title:UVa12563 #include <bits/stdc++.h> using namespace std; const int N = 55, M = 180; int dp[N * M]; int main() { int kase=0,t,n,time,d; cin >> t; while(t--) { cin >> n >> time; memset(dp,-1,sizeof(dp

wew_king的博客 376

分类预测 | MATLAB实现ELM极限学习机多特征分类预测(二分类)

分类预测 | MATLAB实现ELM极限学习机多特征分类预测(二分类)

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 779

UVA 12563 劲歌金曲(两个最优条件的dp问题)

紫书上的0-1背包例题,但是跟普通的0-1背包还是有些差别。 题意: 在告知的n首歌曲里,要选取一些歌曲 使得 歌曲数量尽量多,其次 唱的时间也要尽量长。 那么我们假定 i与j,和0-1背包类似,i代表前i首歌曲,j代表的是时间,是不是跟0-1背包里的第几个物品和重量类似呢, 那么0-1背包里 dp[i][j]代表的是前i个物品里,总共能承受的最大重量j内存放的最大重量。 那么这道题,dp[i][...

一个蒟蒻的博客 374

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

UVA - 12563 劲歌金曲(DP 01背包)

题目 KTV里面有n首歌曲你可以选择,每首歌曲的时长都给出了(每首歌时长不超过3min). 对于每首歌曲,你最多只能唱1遍. 现在给你一个时间限制t (t&lt;=10^9) , t实际不会超过(180n+678)问你在最多t-1秒的时间内可以唱多少首歌曲num , 且最长唱歌时间是多少time 最终输出num+1 和 time+678 即可(最后唱一首“劲歌金曲”). 你需要优先让歌曲数目最...

QiHang的博客 409

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

劲歌金曲 【UVA - 12563】【DP(01背包)】

题目链接 题目大意 求在给定时间内,最多能唱多少歌曲,在最多歌曲的情况下,使唱的时间最长。 解题思路 虽然说t特别大,但是n之后50且每首歌的时间不超过180,所以可以把问题转化为01背包,我本来以为这个题是让求最多可以唱多久的歌。。。然后疯狂wa,读题真的很关键啊 #include<stdio.h> #include<string.h> #include<algor...

qq_41925919的博客 149

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

DP题目推荐合集(洛谷/UVa)

今天下午要参加海淀区的比赛了。。。这几天临时抱佛脚刷了几道DP,正所谓临阵磨枪,不快也光。。。下面我 就把最近刷到的,自己觉得不错的动态规划题列出来: 1、P2690接苹果;(基础二维DP) 2、P1474货币系统 Money Systems;(线性动规,DP方程也比较好想) 3、UVA12563劲歌金曲 Jin Ge Jin Qu hao;(01背包的变式,很基础,也很经典,紫...

weixin_30715523的博客 327

算法竞赛入门经典第九章

例题9-1 城市里的间谍 UVa1025 仿佛有固定终点的DP问题都是从终点开始,往起点规划的??? #include<bits/stdc++.h> using namespace std; #define INF 0X3F3F3F3F int main(){ int kase=0; int n,T,t[55],M1,r_begin,M2,l_begin; int t...

HUGG_dajingzi的博客 300

第九章-多阶段决策

本文包含两个算法问题的解析:1. 单向TSP问题。2. 劲歌金曲问题。 两个问题都展示了动态规划的典型应用,分别针对路径优化和资源分配场景。

lvquan2006的博客 578

UVa12563 Jin Ge Jin Qu hao

给出n首歌的时间,和时间限制,求出在规定时间内能够唱的最多曲数,还有加上劲歌金曲的总时间 测试用例: 2 3 100 60 70 80 3 100 30 69 70 #include<bits/stdc++.h> using namespace std; const int maxn = 55; int a[maxn], n, t, T, dp[10003]; int main() {...

qq_42397248的博客 204

UVA - 12563 Jin Ge Jin Qu hao(劲歌金曲)(0-1背包+滚动数组)

题意:在KTV唱歌剩下的t秒时间内,决定选最爱的n首歌中的一部分歌,在时间结束之前唱一首时长678秒的《劲歌金曲》,使得唱的总曲目尽量多(包括《劲歌金曲》),在此前提下尽量晚的离开KTV。(n<=50,t<=109) 分析: 1、输入保证所有n+1首曲子总长度严格大于t,虽然,t<=109,实际上t不会超过180n+678。 2、dp[i]剩余时间为i时唱的总曲目...

Cherrychan2014的博客 255

劲歌金曲 UVA 12563

劲歌金曲 UVA 12563 (If you smiled when you see the title, this problem is for you ^_^) For those who don’t know KTV, see: https://en.wikipedia.org/wiki/Karaoke_box There is one very popular song cal

GYH0730的博客 616

uva 12563 劲歌金曲

先介绍自己写的,比较循规蹈矩的方法。dp(i,j)表示必须在j时间内结束,在i,i+1,,,,n首歌中选择,可以唱的最大歌曲数 (包含jq) sing(i,j)表示在这个状态、歌曲数取最大的情况下,可以唱的最长时间 (包含jq) #include #include #include #define maxn 50+10 #define maxt 10000+10 #define jq 678

Yuta233的博客 456

uva12563劲歌金曲与LCS

题意:有n首歌(劲歌金曲除外),每首歌都有一个时间,然后给定一个时间t,问在给定的时间内最多能唱的歌曲数目以及能唱的最长时间,如果已经到了时间限制t,但是还没唱完,那么可以唱完这首歌。 分析:每首歌最多180秒,而劲歌金曲有678s,首先得保证唱的歌曲数目最多,之后保证时间更长。留1s唱劲歌金曲就行了。然后就是个01背包,只是规划时根据题目要求来就行了。这个题目中t给定的范围很大,看似无法进行D

Loser 433

UVa12563 劲歌金曲

题目:UVa12563 代码实现: #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;utility&gt; #include&lt;algorithm&gt; using namespace std; typedef pair&lt;int,int&gt; Pii; //first-曲子数 second-时间 co...

Moyu的专栏 287

Jin Ge Jin Qu hao UVA - 12563

(如果当你看到这个标题的时候笑了,那么这个问题是为你准备的ヽ( ̄▽ ̄)ノ) 如果问一个麦霸:“你在KTV里必唱的曲目有哪些?”得到的答案通常都会包含一首“神曲”:古巨基的《劲歌金曲》。为什么呢?一般来说,KTV不会在“时间到”的时候鲁莽地把正在唱的歌切掉,而是会等它放完。例如:在还有15秒时再唱一首2分钟的歌,则实际上多唱了105秒。但是融合了37首歌曲的《劲歌金曲》长达11分18秒,如果唱这首...

weixin_30329623的博客 90
上一篇: 畅通工程之局部最小花费问题 (并查集)
下一篇: memset为什么只能把整型数组的值设置为0或-1
FDOM
博客等级 码龄10年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值