rqnoj PID95:多多看DVD(加强版)
题目描述
多多进幼儿园了,今天报名了。只有今晚可以好好放松一下了(以后上了学后会很忙)。她的叔叔决定给他买一些动画片DVD晚上看。可是爷爷规定他们只能在一定的时间段L看完。(因为叔叔还要搞NOIP不能太早陪多多看碟,而多多每天很早就困了所以只能在一定的时间段里看碟)。多多列出一张表要叔叔给她买N张DVD碟,大多都是多多爱看的动画片(福音战士,机器猫,火影忍者,樱桃小丸子……)。这N张碟编号为(,,……N)。多多给每张碟都打了分Mi(Mi>),打分越高的碟说明多多越爱看。每张碟有播放的时间Ti。多多想在今晚爷爷规定的时间里看的碟总分最高。(必须把要看的碟看完,也就是说一张碟不能只看一半)。显然叔叔在买碟是没必要把N张全买了,只要买要看的就OK了,这样节省资金啊。而且多多让叔叔惯的特别任性只要他看到有几张就一定会看完。
可是出现了一个奇怪的问题,买碟的地方只买给顾客M(M<N)张碟,不会多也不会少。这可让多多叔叔为难了。怎么可以在N张碟中只买M张而且在规定时间看完,而且使总价值最高呢?
聪明的你帮帮多多的叔叔吧。
数据范围 by RQ
对于100%的数据m<n<= l<=
输入格式
输入文件有三行
第一行:两个数空格隔开的正整数,N,M,L(分别表示叔叔给多多买的碟的数量,商店要买给叔叔的碟的数量,爷爷规定的看碟的时间段)。
第二行到第N行,每行两个数:T,M,给出多多列表中DVD碟的信息。
输出格式
单独输出一行,表示多多今晚看的碟的总分。
如果商店卖给叔叔的M张碟无法在爷爷规定的时间看完输出0;
样例输入 样例输出
3
题目
真·题目
if 你是一个小纯洁,请看上面的那个题目。
else 多多是个很污的小萝莉,她搞NOIP的叔叔也好不到哪去,这位叔叔热衷于给侄女买DVD,然后不知道从哪冒出来的爷爷就看不下去了,规定多多每天只能看L时间。多多让叔叔买n张DVD,每张DVD都有时长Ti和分数(多多的喜爱程度)Mi,好心的商人为了多多的身体着想,只卖给叔叔m张。请你满足多多的欲望,让她看碟的分数最高。输入文件有三行,第一行:两个数空格隔开的正整数,N,M,L(分别表示叔叔给多多买的碟的数量,商店要买给叔叔的碟的数量,爷爷规定的看碟的时间段)。第二行到第N行,每行两个数:T,M,给出多多列表中DVD碟的信息。单独输出一行,表示多多今晚看的碟的总分。如果多多一张也看不了欲求不满输出0;
芒果君:先贴代码~
#include<cstdio>
#include<algorithm>
#include<iostream>
#define inf -20000000
using namespace std;
int n,m,l,t[],s[],f[][],i,j,k;
int main()
{
cin>>n>>m>>l;
for(i=;i<=n;++i) cin>>t[i]>>s[i];
for(i=;i<=n;++i)
for(j=;j<=m;++j)
f[i][j]=inf;
for(i=;i<=n;++i)
for(j=m;j>=;--j)
for(k=l;k>=t[i];--k)
if(f[j-][k-t[i]]||j==) f[j][k]=max(f[j][k],f[j-][k-t[i]]+s[i]);
if(f[m][l]==inf) cout<<""<<endl;
else cout<<f[m][l]<<endl;
return ;
}
对于刚学01背包的各位dalao来说,如果听完下节完全背包的课,很快就会对循环的顺序产生疑惑。为什么01背包是逆序?那么我们一定要从动态规划的原理出发——每个dp最后的结果都是由无数个子结果“继承”而来,如果写成正序循环,那么就很可能出现当前物品重复放的情况。同时要关注f数组的意义,有时它和最后的大结果是同步的,即“在一定空间内能获得的最大价值”。在本题当中,由于选取物品的数量有限,就要多加一维来处理,用f[j][k]表示放j个物品,在k空间内获得的最大价值。为了控制只放一个物品,我们把多出的那层循环设置成逆序,并写了一个判断“存在继承可能”的if语句,这道题就算结束了。
rqnoj PID95:多多看DVD(加强版)的更多相关文章
- RQNOJ 95 多多看DVD(加强版):01背包
题目链接:https://www.rqnoj.cn/problem/95 题意: 叔叔要陪多多看动画片. 有n张DVD可以买,第i张碟的打分为w[i],播放时间为t[i]. 爷爷规定他们只能在一定的时 ...
- 加强版DVD管理系统
这个加强版,只做了新增和查看. 主要是在新增代码那里增加了一些处理: 进入新增操作,一直可以不跳出来,每次新增成功后,问你是否继续,输入y就继续,输入n就不继续 代码如下: import java.u ...
- 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 1288 Solved: 490 ...
- 斐波拉契数列加强版——时间复杂度O(1),空间复杂度O(1)
对于斐波拉契经典问题,我们都非常熟悉,通过递推公式F(n) = F(n - ) + F(n - ),我们可以在线性时间内求出第n项F(n),现在考虑斐波拉契的加强版,我们要求的项数n的范围为int范围 ...
- dvd开发小程序
package dvdManager8; import java.util.Scanner; public class DvdSystem8 { static String[][] dvd = new ...
- dvd管理系统
>>>>>>>>>>>>>>>>>>>> 语言:java 工具:eclipse ...
- RQNOJ 490 环形石子合并
题目链接:https://www.rqnoj.cn/problem/490 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一 ...
- JAVA基础代码分享--DVD管理
问题描述 为某音像店开发一个迷你DVD管理器,最多可存6张DVD,实现碟片的管理. 管理器具备的功能主要有: 1.查看DVD信息. 菜单选择查看功能,展示DVD的信息. 2.新增DVD信息 选择新增功 ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
随机推荐
- luogu 2272
Tarjan 缩点 拓扑排序 套路题
- Codevs 2492 上帝造题的七分钟 2(线段树)
时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题目描述 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. " ...
- spark学习笔记之面试
spark常见面试 map与flatMap的区别 题:以下代码输出有什么不同 val books=List("Hadoop","Hive","HDFS ...
- Selenium全屏截图,使用PIL拼接滚动截图
Selenium默认的截图save_screenshot只支持对当前窗口内容进行截图,当如果你想要截取整个网页,那么,可以明确的告诉你. Selenium做不到. 你可以手工使用开发者工具Ctrl+S ...
- python ros 设置机器人的位置
#!/usr/bin/env python import rospy import math from tf import transformations from geometry_msgs.msg ...
- Codeforces 1276C/1277F/1259F Beautiful Rectangle (构造)
题目链接 http://codeforces.com/contest/1276/problem/C 题解 嗯,比赛结束前3min想到做法然后rush不出来了--比赛结束后又写了15min才过-- 以下 ...
- webpack - 优化阻塞渲染的css
随着浏览器的日新月异,网页的性能和速度越来越好,并且对于用户体验来说也越来越重要. 现在有很多优化页面的办法,比如:静态资源的合并和压缩,code splitting,DNS预读取等等. 本文介绍的是 ...
- HDU 1114 Piggy-Bank ——(完全背包)
差不多是一个裸的完全背包,只是要求满容量的最小值而已.那么dp值全部初始化为inf,并且初始化一下dp[0]即可.代码如下: #include <stdio.h> #include < ...
- Gym - 100199C
Gym - 100199C 题意: 其实这么长的英文题面就是想告诉我们这个题是丢手绢. 解法: 找到与 $ N $ 互质的最大整数 $ K $ 即可.当 $ N $ 为奇数时, $ \frac{N-1 ...
- 黑马vue---37-38、vue实例的生命周期
黑马vue---37-38.vue实例的生命周期 一.总结 一句话总结: created:实例已经在内存中创建OK,此时 data 和 methods 已经创建OK,此时还没有开始 编译模板 moun ...