`
king_tt
  • 浏览: 2113146 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

UVA 473 - Raucous Rockers (dp)

 
阅读更多


本文出自 http://blog.csdn.net/shuangde800




题意
有n首歌,每首时长Ti,要把这n首歌装进m个光盘里面,每个光盘最多能存的时长为t
要求这些歌在光盘里面要按照所给歌的先后顺序存入,不能改变前后顺序。
例如有4首歌,按顺序给出他们的时长:1,2,3,4.
装入一个容量时长为10的光盘里, 可以是1,2,3或者1,3,4等,但是不能2,1,3
问最多能存几首歌?


思路:
用f[i][j][k]表示前i首歌,用j个光盘,且第j个光盘用了k的时间,可存的最多首歌
当枚举到第i首歌,用到第j个光盘时,有决策以及状态转移:


1. 选择不要存这首歌,那么有
f[i][j][k] = max(f[i][j][k], f[i-1][j][k]);

2. 这首歌是第j个光盘的第一首歌时,有
f[i][j][k] = max(f[i][j][k], f[i-1][j-1][t]+1);

3. 不是第j个光盘的第一首歌时
f[i][j][k] = max(f[i][j][k], f[i-1][j][k-T[i]]+1);





代码君:
/**===========================================
 *  This is a solution for ACM/ICPC problem.
 *
 *  @author: shuangde
 *  @blog: http://blog.csdn.net/shuangde800 
 *  @email: zengshuangde@gmail.com
 *============================================*/

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;

typedef long long int64;
const int INF = 0x3f3f3f3f;
const int MAXN = 1010;
const int MOD = 10007;

int n, t, m;
int T[MAXN];
int f[900][120][120];


int main(){

    int nCase;
    scanf("%d", &nCase);

    while(nCase--){
        
        scanf("%d%d%d", &n, &t, &m);
        int idx = 0, x;
        for(int i=1; i<=n; ++i){
            if(i==1) scanf("%d", &x);
            else scanf(", %d", &x);
            if(x <= t) T[++idx] = x; 
        }

        n = idx;

        memset(f, 0, sizeof(f));

        for(int i=1; i<=n; ++i){
            for(int j=1; j<=m; ++j){
                for(int k=0; k<=t; ++k){
                    f[i][j][k] = f[i-1][j][k];
                    if(k >= T[i]){
                        f[i][j][k] = max(f[i][j][k], f[i-1][j][k-T[i]]+1);
                        f[i][j][k] = max(f[i][j][k], f[i-1][j-1][t]+1);
                    }
                } 
            } 
        }
        printf("%d\n", f[n][m][t]);
        if(nCase) puts("");
    }

    return 0;
}


分享到:
评论

相关推荐

    基于 Java 实现的宠物医院在线挂号系统

    基于 Java 实现的宠物医院在线挂号系统 基于 Java 实现的宠物医院在线挂号系统

    天津欢乐谷官方网站html5响应式触屏版手机wap旅游网站模板.zip

    触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板

    基于matlab实现的混沌扰动算法来解决pso算法早熟问题,并用二者结合来训练灰色预测模型参数.rar

    基于matlab实现的混沌扰动算法来解决pso算法早熟问题,并用二者结合来训练灰色预测模型参数.rar

    基于matlab实现的活性污泥模型的计算中进水水质转化的源代码.rar

    基于matlab实现的活性污泥模型的计算中进水水质转化的源代码.rar

    node-v5.7.1.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    使用Fcn UNet训练防焊无开口-python源码.zip

    使用Fcn UNet训练防焊无开口-python源码.zip

    ONNXRuntime部署LSTR基于Transformer实时车道线检测包含C++和Python源码+模型+说明.zip

    ONNXRuntime部署LSTR基于Transformer实时车道线检测包含C++和Python源码+模型+说明.zip

    2021-2010上市公司和讯网社会责任评级CSR-股东员工客户消费者环境社会责任分项评级

    上市公司和讯网社会责任评级CSR-股东责任员工责任客户消费者环境社会责任分项评级 得分(2010-2021年) "中国上市公司-和讯网社会责任数据"是 一份来自和讯网的数据集,它同步并收集了中国上市公司关于社会责任的相关信息。包括了 公司在股东责任、员工责任、供应商客户消费者权益责任、环境责任、社会责任中的表现和 成绩,以反映公司承担社会责任的程度。可以帮助大家了解公司在承担社会责任方面的具体 表现。这对于研究公司社会责任与公司业绩、公司声誉、公司风险等方面的关系具有参考意 义。 一、数据介绍 数据名称:上市公司和讯网社会责任评级CSR-股东责任员工责任 客户消费者环境社会责任分项评级得分 数据年份:2010-2021年 样本数量:每 年含2300-4600左右上市公司数据,总数据量40058条(注:因披露口径原因 ,2021年仅有430+上市公司数据) 数据格式:Excel面板数据 二、指标说 明 共计11个指标:股票名称、股票代码、年份、总得分、等级、股东责任、员工责任、 供应商客户和消费者权益责任、环境责任、社会责任、统计日期 三、部分excel数据 展示

    用Stata怎样检验调节效应和被调节的中介效应:学习课件,数据、程序命令源代码

    用Stata怎样检验调节效应和被调节的中介效应:学习课件,数据、程序命令源代码 自己重新整理,不存在任何版权、争议的商业信息! 用Stata怎样检验调节效应和 被调节的中介效应:学习课件,数据、程序命令源代码 用Stata怎样检验调节效应和 被调节的中介效应:学习课件,数据、程序命令源代码 用Stata怎样检验调节效应和 被调节的中介效应:学习课件,数据、程序命令源代码 用Stata怎样检验调节效应和 被调节的中介效应:学习课件,数据、程序命令源代码

    机械设计导套自动供料机sw18可编辑非常好的设计图纸100%好用.zip

    机械设计导套自动供料机sw18可编辑非常好的设计图纸100%好用.zip

    数学建模比赛知识点介绍.zip

    数学建模 数学建模比赛的知识点非常广泛,涵盖了多个数学领域和实际应用领域。以下是一些常见的数学建模比赛知识点介绍: 线性代数:线性代数是数学建模中非常重要的基础知识,包括矩阵运算、线性方程组、向量空间、特征值和特征向量等。这些知识点在解决优化问题、控制系统、信号处理等领域都有广泛应用。 微积分:微积分是数学建模中另一个重要的基础知识,包括函数的极限、导数、微分、积分等。微积分在物理、工程、经济等领域都有广泛应用,例如解决动力学问题、优化问题、概率统计问题等。 概率论与数理统计:概率论和数理统计是数学建模中处理不确定性和随机性的重要工具。这包括随机变量、概率分布、随机过程、假设检验、回归分析、方差分析等。这些知识点在风险评估、市场预测、质量控制等领域都有广泛应用。

    IEC 60947-9-1-2019 低压开关设备和控制设备第9-1部分:主动电弧故障缓解系统灭弧装置.pdf

    IEC 60947-9-1-2019 低压开关设备和控制设备第9-1部分:主动电弧故障缓解系统灭弧装置.pdf

    node-v10.19.0-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    机械设计全自动进料插件机sw18非常好的设计图纸100%好用.zip

    机械设计全自动进料插件机sw18非常好的设计图纸100%好用.zip

    豪华版XX主数据管理解决方案(63页).ppt

    【豪华版】XX主数据管理解决方案(63页).ppt

    node-v4.3.2.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    城市表层土壤重金属污染分析方案设计以及结果分析.doc

    本文档是课题研究的研究报告内含调研以及源码设计以及结果分析

    仿GoMobile触屏版html5响应式手机app网站模板下载-懒人模板.zip

    触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板

    手机159彩触屏版手机wap用户登陆注册模板.zip

    触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板

    node-v12.11.1-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics