题目描述

你刚刚继承了流行的“破锣摇滚”乐队录制的尚未发表的N(1 <= N <= 20)首歌的版权。你打算从中精选一些歌曲,发行M(1 <= M <= 20)张CD。每一张CD最多可以容纳T(1 <= T <= 20)分钟的音乐,一首歌不能分装在两张CD中。CD数量可以用完,也可以不用完

不巧你是一位古典音乐迷,不懂如何判定这些歌的艺术价值。于是你决定根据以下标准进行选择:

1.歌曲必须按照创作的时间顺序在所有的CD盘上出现。(注:第i张盘的最后一首的创作时间要早于第i+1张盘的第一首)

2.选中的歌曲数目尽可能地多

输入输出格式

输入格式:

第一行: 三个整数:N, T, M.

第二行: N个整数,分别表示每首歌的长度,按创作时间顺序排列。

输出格式:

一个整数,表示可以装进M张CD盘的乐曲的最大数目。

输入输出样例

输入样例#1: 复制

4 5 2
4 3 4 2
输出样例#1: 复制

3

说明

题目翻译来自NOCOW。

USACO Training Section 3.4

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; const int N=; int n,T,m;
int a[N];
int dp[N][N]; int main()
{
scanf("%d%d%d",&n,&T,&m);
for(int i=;i<=n;++i)
scanf("%d",a+i);
for(int i=;i<=n;++i)
{
for(int j=m;j>=;--j)
{
for(int k=T;k>=a[i];--k)
{
dp[j][k]=max(dp[j][k],max(dp[j-][T]+,dp[j][k-a[i]]+));
}
}
}
printf("%d",dp[m][T]);
return ;
}

DP版

/*每一首歌都有三种状态。 1、在当前盘里装 2、换张盘装 3、不装    那我们对每首歌进行三种状态的dfs,选到最后找出最大值,且这样做第i张盘的最后一首歌一定比第i+1张盘的第一张早,因为dfs中的歌的编号是递增的*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std; int n,m,t,ans=-,tot=;
int cd[],tim[]; void dfs(int now,int sum) //now表示当前选到了第几首歌,sum表示选了几首歌
{
if(sum+n+-now<=ans) return; //重要剪枝,如果把后面的歌全装上也不能使答案更新,那么在往下一定不会有更优解,则return
if(now==n+) //歌选完了
{
ans=max(ans,sum);
return;
}
if(cd[tot]>=tim[now]) //在当前盘里装
{
cd[tot]-=tim[now];
dfs(now+,sum+);
cd[tot]+=tim[now];
}
if(tot<m&&t>=tim[now]) //换张盘装
{
tot++;
cd[tot]-=tim[now];
dfs(now+,sum+);
cd[tot]+=tim[now];
tot--;
}
dfs(now+,sum); //不装
} int main()
{
scanf("%d%d%d",&n,&t,&m);
for(int i=;i<=n;i++)
{
scanf("%d",&tim[i]);
}
for(int i=;i<=m;i++)
{
cd[i]=t;
}
dfs(,);
printf("%d",ans);
return ;
}

DFS版

P2736 “破锣摇滚”乐队 Raucous Rockers的更多相关文章

  1. 洛谷P2736 “破锣摇滚”乐队 Raucous Rockers

    P2736 "破锣摇滚"乐队 Raucous Rockers 21通过 52提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 暂时没有 ...

  2. [luoguP2736] “破锣摇滚”乐队 Raucous Rockers(DP)

    传送门 f[i][j]表示前i首歌放到前j个盘里最多能放多首 ntr[i][j]表示i~j中最多能放进一张盘中多少首歌 ntr数组可以贪心预处理出来. #include <cstdio> ...

  3. “破锣摇滚”乐队(codevs 1444)

    题目描述 Description 你刚刚继承了流行的“破锣摇滚”乐队录制的尚未发表的N(1 <= N <= 20)首歌的版权.你打算从中精选一些歌曲,发行M(1 <= M <= ...

  4. Codevs 1444 “破锣摇滚”乐队

    1444 “破锣摇滚”乐队   题目描述 Description 你刚刚继承了流行的“破锣摇滚”乐队录制的尚未发表的N(1 <= N <= 20)首歌的版权.你打算从中精选一些歌曲,发行M ...

  5. USACO 3.4 Raucous Rockers

    Raucous Rockers You just inherited the rights to N (1 <= N <= 20) previously unreleased songs ...

  6. USACO Section 3.4: Raucous Rockers

    简单的dfs题目 /* ID: yingzho1 LANG: C++ TASK: rockers */ #include <iostream> #include <fstream&g ...

  7. 递推DP UVA 473 Raucous Rockers

    题目传送门 题意:n首个按照给定顺序存在m张光盘里,每首歌有播放时间ti,并且只能完整的存在一张光盘里,问最多能存几首歌 分析:类似01背包和完全背包,每首歌可存可不存,存到下一张光盘的情况是当前存不 ...

  8. DP擎天

    DP! 黄题: 洛谷P2101 命运石之门的选择 假装是DP(分治 + ST表) CF 982C Cut 'em all! 树形贪心 洛谷P1020 导弹拦截 单调队列水题 绿题: 洛谷P1594 护 ...

  9. DP小题集

    P2736 "破锣摇滚"乐队 Raucous Rockers 你刚刚继承了流行的"破锣摇滚"乐队录制的尚未发表的N(1 <= N <= 20)首歌的 ...

随机推荐

  1. 准备写个Golang开发的教程

    进入golang的开发已经差不多两年了,最近打算写个Golang的教程.目的是让有开发基础,没接触过Golang的人能够愉快高效地写出Golang项目. 1 记得17年底时候,有个特别小的项目,准备试 ...

  2. go context 源码分析

    WithCancel func WithCancel(parent Context) (ctx Context, cancel CancelFunc) { c := newCancelCtx(pare ...

  3. zabbix的离线安装方法----孙祎晨,如需转载请注明出处,谢谢配合。

    ------------------------zabbix的离线安装步骤--------------------------------------------------------------- ...

  4. Java Comparable与Comparator区别

    1,两种接口的展示 下面的程序是两个类各自实现了Comparable接口.Comparator接口 package com.cnblogs.mufasa.Solution; import java.u ...

  5. 使用VS2012编译和使用C++ STL(STLport)

    使用VS2012编译和使用C++ STL(STLport) http://cstriker1407.info/blog/use-vs2012-to-compile-and-use-the-c-stl- ...

  6. DeepID_V2解读

    港中文汤晓鸥团队在DeepID_v1基础上提出的新版本架构,发表于NIPS2014 一.Architecture 网络架构基本上与DeepId_v1一致. 二.Pipeline 图片被分成20regi ...

  7. Nacos笔记01——使用Nacos作为SpringCloud项目的服务注册中心

    前言 刚学SpringCloud时使用eureka作为服务注册中心,随着网飞公司eureka2.x不再更新,以及最近在公司实习接触到的SpringCloud项目是使用Nacos来做服务注册中心的,所以 ...

  8. 命令“regsvr32 /s /n /i:user "XXXXXX"”已退出,代码为 3

    问题:命令“regsvr32 /s /n /i:user "F:\XXXXXXXXXXXXXXXXX\Release\One.ocx"”已退出,代码为 3 解决方法: The is ...

  9. Linux下如何挂载文件,并设置开机自动挂载

    首先保证服务端安装了 查看是否安装命令: nfsstat yum install nfs-utils 安装nfs-utils 192.168.50.85(服务端)192.168.50.83(客户端) ...

  10. JS 客户端(浏览器)存储数据之 localStorage、sessionStorage和indexDB

    基本概念 1.localStorage和sessionStorage是HTML5 Web存储的提供的两种存储方式,在IE7以上以及大多数浏览器都是支持的 2.localStorage和sessionS ...