HDU 3496 Watch The Movie(看电影)

Time Limit: 1000MS   Memory Limit: 65536K

【Description】

【题目描述】

New semester is coming, and DuoDuo has to go to school tomorrow. She decides to have fun tonight and will be very busy after tonight. She like watch cartoon very much. So she wants her uncle to buy some movies and watch with her tonight. Her grandfather gave them L minutes to watch the cartoon. After that they have to go to sleep.

DuoDuo list N piece of movies from 1 to N. All of them are her favorite, and she wants her uncle buy for her. She give a value Vi (Vi > 0) of the N piece of movies. The higher value a movie gets shows that DuoDuo likes it more. Each movie has a time Ti to play over. If a movie DuoDuo choice to watch she won’t stop until it goes to end.

But there is a strange problem, the shop just sell M piece of movies (not less or more then), It is difficult for her uncle to make the decision. How to select M piece of movies from N piece of DVDs that DuoDuo want to get the highest value and the time they cost not more then L.

How clever you are! Please help DuoDuo’s uncle.

新学期即将开始,DuoDuo明天就要去学校了。想了想之后忙碌的生活,她还是决定在今晚找找乐子。DuoDuo十分喜欢欧美动画。因此她希望她叔叔买些回来晚上一起看。她爷爷却给她限定L分钟的时间看动画,之后必须去睡觉。

DuoDuo从1到N列了N部电影。对于她的最爱,统统都想要。她给出了对这N部电影的好感度Vi(Vi > 0)。数值越高,DuoDuo越喜欢。每部电影时长为Ti。DuoDuo一旦开始观看,就势必要看完。

但是奇葩的是,这家商店只出售M部影片(不多不少),这可难坏了她叔叔。如何才能在N部DuoDuo想要的DVDs中挑M部并且在不超过L的时间内收获最多的好感度?

聪明如你!定可助DuoDuo的叔叔一臂之力。

【Input】

【输入】

The first line of the input file contains a single integer t (1 ≤ t ≤ 10), the number of test cases, followed by input data for each test case:

The first line is: N(N <= 100),M(M<=N),L(L <= 1000)

N: the number of DVD that DuoDuo want buy.

M: the number of DVD that the shop can sale.

L: the longest time that her grandfather allowed to watch.

The second line to N+1 line, each line contain two numbers. The first number is the time of the ith DVD, and the second number is the value of ith DVD that DuoDuo rated.

输入数据的第一行是一个整数t(1 ≤ t ≤ 10),表示测试用例的数量,随后的每个测试用例:

第一行:N(N <= 100),M(M<=N),L(L <= 1000)

N:DuoDuo想买的DVD数量。

M:商店可出售的DVD数量。

L:她爷爷运行的最长观看时间。

第二到N+1行,每行两个数。第一个数字表示第i个DVD的时长,第二个数字表示DuoDuo对其的好感度。

【Output】

【输出】

Contain one number. (It is less then 2^31.)

The total value that DuoDuo can get tonight.

If DuoDuo can’t watch all of the movies that her uncle had bought for her, please output 0.

包含一个数字。(小于2^31。)

DuoDuo今晚收获的好感度。

如果DuoDuo不能看完她叔叔所买的电影则输出0。

【Sample Input - 输入样例】

【Sample Output - 输出样例】

1

3 2 10

11 100

1 2

9 1

3

【题解】

  二维01背包

  (之前为了看(qiang)着(po)爽(zheng)用vector来写,写着写着代码量比预期越来越高,于是默默地放弃了……)

  最后的好感度V太大,不过时间T和DVD的数量N都不大,可以用来当坐标轴。

  考虑到T或N在某一状态都可能相同,因此T与N都应该成为坐标轴,其值为V。

  这么看来就是一个二维的01背包了。 V[T][N]或V[N][T]怎么开都行。

【代码 C++】

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #define time 1005
 5 #define cdSUM 105
 6 int main(){
 7     int ts, i, j, t, v, n, m, tLimt, cd[cdSUM][2], value[time][cdSUM];
 8     scanf("%d", &ts);
 9     while (ts--){
10         memset(value, 0, sizeof(value));
11         scanf("%d%d%d", &n, &m, &tLimt);
12         while (n--){
13             scanf("%d%d", &t, &v);
14             for (i = tLimt - 1; i > 0; --i){
15                 for (j = 0; j < m; ++j){
16                     if (value[i][j] && i + t <= tLimt){
17                         value[i + t][j + 1] = std::max(value[i][j] + v, value[i + t][j + 1]);
18                     }
19                 }
20             }
21             value[t][1] = std::max(v, value[t][1]);
22         }
23         for (i = v = 0; i <= tLimt; ++i) v = std::max(v, value[i][m]);
24         printf("%d\n", v);
25     }
26     return 0;
27 }

转载于:https://www.cnblogs.com/Simon-X/p/5365694.html

HDU 3496 Watch The Movie(看电影)相关推荐

  1. AI看电影看哭了...MIT科学家正在教AI感受电影中的喜怒哀乐

    翻译 | AI科技大本营(rgznai100) 参与 | 么广忠 虽然我们都知道人工智能(AI)特别火,但AI究竟能做什么了不起的事情呢?要是问AI能不能写出一本畅销的书,目前的答案是不能,显然AI目 ...

  2. 有一次去校内的某个礼堂看电影,在门口有个长得很斯文的陌生人一脸神秘地跟我说:师弟,能不能进去之后,把电影票从厕所的气窗扔出来给我……...

    有一次去校内的某个礼堂看电影,在门口有个长得很斯文的陌生人一脸神秘地跟我说:师弟,能不能进去之后,把电影票从厕所的气窗扔出来给我-- 我说呸!你这点花花肠子人家早就料到了,门口的大妈要把票撕破才能进去 ...

  3. 如何解决和异地女朋友一起看电影的需求?(内附源码)

    一.这是一件悲伤的故事 我是一名程序员,我和我的女友是异地恋,so sad!!! 一次视频时,她突然来了一句:"我们已经很久没有一起看电影了吧......" "呃...好 ...

  4. 保益悦听怎么开盲人模式_盲人看电影???是的!盲人看电影!!!

    太!异!想!天!开!了!是谁提出的这个想法,竟然想组织盲人看电影这不是拿刀戳心窝子嘛! 但是!这异想天开的事情竟让一位年近七旬的盲人蒋鸿源办成了!还获得了大批"同盲中人"的夸奖,甚 ...

  5. 开始ubuntu 14.04 的装X模式---终端模式下中文输入,听歌,上irc 开启framebuffer看电影 截图...

    先上图吧 卡卡的全是在tty1 下的操作,看电影,听歌,截图 ,看图  ,上irc 等等,相当适合在小白面前装屁! 需要安装的软件: 为了能正常显示中文:安装fbterm sudo apt-get i ...

  6. 怎么跟女生看电影牵手技巧方法

    现在人们的娱乐生活越来越丰富,很多男生在约会时喜欢带女生去看电影.但是很有时候只是看电影远远不够,在电影院如果拉不到女生的小手,这个约会不就是白费了吗?那么怎么和女生看电影牵手技巧有哪些呢? 1.尽可 ...

  7. 苹果cms v8 漫漫看电影模板 自适应手机移动端

    简介: 苹果cms v8 漫漫看电影模板 自适应手机移动端 网盘下载地址: http://kekewl.cc/dG6LC2i1VpA0 图片:

  8. Zjoi2011 看电影

    最近在学习一些概率的东西.. 一个随机试验称为 Laplace 试验,当且仅当它满足如下两个条件: (ⅰ) 试验结果 (样本点) 的个数是有限的.(Ω 是有限集) (ⅱ) 任意两个基本事件的概率均相等 ...

  9. 用计算机听音乐和看电影的ppt,五年级下册信息技术课件-第六课 用计算机听音乐和看电影 川教版 (共13张PPT)...

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我 ...

最新文章

  1. OS_CORE.C(4)
  2. 深入理解javascript
  3. 生成三角网算法java,一种低效但逻辑简单清晰的Delaunay三角网生成算法
  4. Retrofit使用
  5. BZOJ.4650.[NOI2016]优秀的拆分(后缀数组 思路)
  6. QCon北京2015:移动开发最佳实践专题前瞻
  7. 计算机视觉之YOLO算法
  8. 手动杀毒,SOLA病毒,也称之为worm.script.bat.Agent、Trojan.Win32.Sola病毒)
  9. navicat mysql 数据库备份_怎么用navicat自动备份mysql数据库
  10. matlab 拟合曲线 预测,matlab曲线拟合和预测
  11. XP IIS下配置.net的问题总结与简单解决方法
  12. k8s 查看ip地址属于哪个pod_你如何从其IP地址获得Kubernetes pod的名字?
  13. unidbg第二讲 例子讲解com.sun.jna.JniDispatch32
  14. Linux 命令系统
  15. 教育行业一般用什么邮箱,教育邮箱推荐
  16. 【matlab】雷达截面积(Radar Cross Section,RCS)(MATLAB部分仿真+Code)
  17. thinkpad卡在logo界面_win10系统开机卡在开机Thinkpad LoGo画面的恢复教程
  18. R语言数据处理——基于tidyverse (一)
  19. centos7 编译安装ffmpeg + x264 + acc + yasm
  20. Excel导入null错误解决方式

热门文章

  1. linux 如何扫描 病毒,linux安装fprot扫描病毒
  2. 子集和问题 算法_LeetCode 题解 | 78.子集
  3. C是C++的子集吗?
  4. 微信h5支付“网站域名ICP备案主体与商户号主体不一致”的解决方法,H5微信支付 授权函下载
  5. 数据分析展示B站UP主假吃强(Cram阿强)的面目-视频与简介篇
  6. python关于类的通俗描述?
  7. ai的预览模式切换_ai预览缩略图插件 在资源管理器中预览ai文件和eps文件
  8. 解释RIP协议为什么会有“好消息传得快,坏消息传得慢。”的现象?(解释超详细)
  9. Java实现文件拷贝,以及修改文件扩展名
  10. 计算机如果添加新用户名,怎么在电脑中创建新用户