传送门

f[i][j]表示前i首歌放到前j个盘里最多能放多首

ntr[i][j]表示i~j中最多能放进一张盘中多少首歌

ntr数组可以贪心预处理出来。

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <algorithm>
  4. #define N 21
  5. #define max(x, y) ((x) > (y) ? (x) : (y))
  6.  
  7. int n, t, m;
  8. int a[N], b[N], ntr[N][N], f[N][N];
  9. //f[i][j]表示前i首歌放到前j个盘里最多能放多首
  10. //ntr[i][j]表示i~j中最多能放进一张盘中多少首歌
  11.  
  12. inline int read()
  13. {
  14. int x = 0, f = 1;
  15. char ch = getchar();
  16. for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
  17. for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
  18. return x * f;
  19. }
  20.  
  21. inline void init()
  22. {
  23. int i, j, k, sum, cnt;
  24. for(i = 1; i <= n; i++)
  25. for(j = i; j <= n; j++)
  26. {
  27. sum = cnt = 0;
  28. for(k = i; k <= j; k++) b[k] = a[k];
  29. std::sort(b + i, b + j + 1);
  30. for(k = i; k <= j; k++)
  31. if(sum + b[k] <= t)
  32. {
  33. cnt++;
  34. sum += b[k];
  35. }
  36. ntr[i][j] = cnt;
  37. }
  38. }
  39.  
  40. int main()
  41. {
  42. int i, j, k;
  43. n = read();
  44. t = read();
  45. m = read();
  46. for(i = 1; i <= n; i++) a[i] = read();
  47. init();
  48. for(i = 1; i <= n; i++)
  49. for(j = 1; j <= m; j++)
  50. for(k = 0; k < i; k++)
  51. f[i][j] = max(f[i][j], f[k][j - 1] + ntr[k + 1][i]);
  52. printf("%d\n", f[n][m]);
  53. return 0;
  54. }

  

[luoguP2736] “破锣摇滚”乐队 Raucous Rockers(DP)的更多相关文章

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

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

  2. P2736 “破锣摇滚”乐队 Raucous Rockers

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

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

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

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

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

  5. USACO 3.4 Raucous Rockers

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

  6. 递推DP UVA 473 Raucous Rockers

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

  7. USACO Section 3.4: Raucous Rockers

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

  8. DP擎天

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

  9. DP小题集

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

随机推荐

  1. POST 传参

    $http.post("../jzgCar_listAllJzgCar.do?data={parentId:"+value+"}") value 是参数,都是双 ...

  2. re正则表达式公式讲解4

    1.re,split()  字符串分离 import re s = "abc20tyu9iou16hij25" m = re.split("\d",s) #以& ...

  3. 【HEVC帧间预测论文】P1.5 Fast Coding Unit Size Selection for HEVC based on Bayesian Decision Rule

    Fast Coding Unit Size Selection for HEVC based on Bayesian Decision Rule <HEVC标准介绍.HEVC帧间预测论文笔记&g ...

  4. gym 100947I (求因子)

    What a Mess Alex is a very clever boy, after all he is the son of the greatest watchmaker in Odin. O ...

  5. Python3简明教程(五)—— 流程控制之循环

    有些时候我们需要多次执行相同的任务,我们使用一个计数器来检查代码需要执行的次数.这个技术被称为循环. while循环 while语句的语法如下: while condition: statement1 ...

  6. dig - 发送域名查询信息包到域名服务器

    SYNOPSIS(总览) dig [@ server ] domain [Aq query-type ] [Aq query-class ] [+ Aq query-option ] [-Aq dig ...

  7. 细说PHP-5.3.4变量的引用赋值

    变量总是传值赋值.也就是说,当讲一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量.这意味着,当一个变量的值赋予另个一变量时,改变其中一个变量的值,将不会影响到另一个变量.PHP中提供了 ...

  8. vux安装

    1. 在项目里安装vux cnpm install vux --save 2. 安装vux-loader cnpm install vux-loader --save-dev 3. 安装less-lo ...

  9. Yii1 用commandBuilder方法往数据表中插入多条记录

    $builder = Yii::app()->db->schema->commandBuilder; // 创建builder对象 $command = $builder->c ...

  10. 2012 noip提高 Vigenère 密码

    P1079 Vigenère 密码 题目描述 16 世纪法国外交家 Blaise de VigenèreBlaisedeVigene`re 设计了一种多表密码加密算法―― VigenèreVigene ...