博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO3.4 Raucous Rockers
阅读量:5135 次
发布时间:2019-06-13

本文共 2152 字,大约阅读时间需要 7 分钟。

Raucous Rockers
Raucous Rockers

You just inherited the rights to N (1 <= N <= 20) previously unreleased songs recorded by the popular group Raucous Rockers. You plan to release a set of M (1 <= M <= 20) compact disks with a selection of these songs. Each disk can hold a maximum of T (1 <= T <= 20) minutes of music, and a song can not overlap from one disk to another.

你刚刚获得了流行乐队Raucous Rockers录制的N(1 <= N <= 20)首未发行歌曲的版权。您计划发布一组M(1 <= M <= 20)张包含这些歌曲的 CD。每张 CD 可以保存最多T(1 <= T <= 20)分钟的音乐,并且一首歌曲不能分段保存。

Since you are a classical music fan and have no way to judge the artistic merits of these songs, you decide on the following criteria for making the selection:

  • The songs on the set of disks must appear in the order of the dates that they were written.
  • The total number of songs included will be maximized.

由于你是古典音乐迷,无法判断这些歌曲的艺术价值,你决定根据以下标准进行选择:

  • CD 上的歌曲必须按照这些歌曲的完成时间依次出现(从较早到较晚)。
  • 最大化包含的歌曲总数。

PROGRAM NAME: rockers

INPUT FORMAT 输入格式

Line 1: Three Integers: N, T, and M.

Line 2: N integers that are the lengths of the songs ordered by the date they were written.

第 1 行:三个整数 N,T和M。

第 2 行:N 个整数,表示了每首歌曲的长度(按照完成时间排序)。

SAMPLE INPUT (file rockers.in) 样例输入(文件 rockers.in)

4 5 24 3 4 2

OUTPUT FORMAT 输出格式

A single line with an integer that is the number of songs that will fit on M disks.

SAMPLE OUTPUT (file rockers.out) 样例输出(文件 rockers.out)

3

题解

类似背包;上代码:

1 /* 2 ID: hanghan1 3 LANG: C++11 4 PROB: rockers 5 */ 6 #define _TASK_ "rockers" 7 #include 
8 using namespace std; 9 #define N 10510 int dp[N][N], len[N], f[N];11 12 int main() {13 freopen(_TASK_ ".in", "r", stdin);14 freopen(_TASK_ ".out", "w", stdout);15 int n, t, m; scanf("%d%d%d", &n,&t,&m);16 for (int i=1; i<=n; i++) scanf("%d", &len[i]);17 for (int i=1; i<=n; i++) {18 for (int j=m; j>=1; j--) {19 dp[j][0] = f[j-1];20 for (int k=t; k>=len[i]; k--) if (dp[j][k] < dp[j][k-len[i]]+1) {21 dp[j][k] = dp[j][k-len[i]]+1;22 f[j] = max(f[j], dp[j][k]);23 }24 }25 }26 printf("%d\n", f[m]);27 return 0;28 }

转载于:https://www.cnblogs.com/mchmch/p/usaco-3-4-rockers.html

你可能感兴趣的文章
变量声明和定义的关系
查看>>
Wpf 之Canvas介绍
查看>>
linux history
查看>>
jQuery on(),live(),trigger()
查看>>
Python2.7 urlparse
查看>>
sencha touch在华为emotion ui 2.0自带浏览器中圆角溢出的bug
查看>>
【架构】Linux的架构(architecture)
查看>>
ASM 图解
查看>>
Date Picker控件:
查看>>
你的第一个Django程序
查看>>
grafana授权公司内部邮箱登录 ldap配置
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
javascript 浏览器类型检测
查看>>
nginx 不带www到www域名的重定向
查看>>
记录:Android中StackOverflow的问题
查看>>
导航,头部,CSS基础
查看>>
[草稿]挂载新硬盘
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
关于mysql中GROUP_CONCAT函数的使用
查看>>