洛谷1417烹调方案——动态规划:价值受时间影响
题目:https://www.luogu.org/problemnew/show/P1417
与01背包的不同在于价值受时间影响。
对第i个物品的遍历有一个先后顺序,在01背包里顺序不影响,但此时顺序会影响。
所以可以考虑对遍历的顺序排序。因为排序时会把每一个都和其余所有比较一番,所以考虑好排序的条件就能保证排序之后就可以01背包了。
排序时只有两种情况:x在y前 和 y在x前。考虑这两种的不同之处在于x在y前时多减了x.c*y.b,y在x前时多减了y.c*x.b,故把减得少的排在前面。
关键在于这个排序的考量!不是简单地按c的大小排,也不是把a也带上然后如何地算一番,而是考虑 x在y前 和 y在x前 这两种情况的不同点!
因为 x在y前 和 y在x前 两种情况中的x的值和y的值也是变化的!
最后注意输入是一行一行的。
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n,t; long long d[100005],mx; struct Node{long long a,b,c; }v[55]; bool cmp(Node x,Node y){return y.b*x.c<x.b*y.c;} int main() {scanf("%d%d",&t,&n);for(int i=1;i<=n;i++)scanf("%lld",&v[i].a);for(int i=1;i<=n;i++)scanf("%lld",&v[i].b);for(int i=1;i<=n;i++)scanf("%lld",&v[i].c);sort(v+1,v+n+1,cmp);for(int i=1;i<=n;i++)for(int j=t;j>=v[i].c;j--)d[j]=max(d[j],d[j-v[i].c]+v[i].a-j*v[i].b);for(int i=1;i<=t;i++)if(d[i]>mx)mx=d[i];printf("%lld",mx);return 0; }
转载于:https://www.cnblogs.com/Narh/p/8391800.html
洛谷1417烹调方案——动态规划:价值受时间影响相关推荐
- 洛谷 1417 烹调方案
题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的 ...
- 洛谷P1417 烹调方案
洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...
- 洛谷 P1417 烹调方案
题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的 ...
- 洛谷 P1417 烹调方案 (01背包拓展)
一看到这道题就是01背包 但是我注意到价值和当前的时间有关. 没有想太多,直接写,0分 然后发现输入方式不对-- 改了之后只有25分 我知道wa是因为时间会影响价值,但不知道怎么做. 后来看了题解,发 ...
- 洛谷—P1417 烹调方案(背包问题)
解题思路: 如果没有b[i]这个属性的话就是明显的01背包问题. 现在考虑相邻的两个物品x,y.假设现在已经耗费p的时间,那么分别列出先做x,y的代价: a[x]-(p+c[x])*b[x]+a[y] ...
- 洛谷P1280 caioj 1085 动态规划入门(非常规DP9:尼克的任务)
这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...
- 洛谷-省选斗兽场-动态规划1
记 练习一下动态规划水题系列,防止脑子生锈. P1879 玉米田 题解 非常典型的状态压缩DPDPDP,先预处理出所有可行的状态SSS. 然后逐行DP" role="present ...
- 花店橱窗布置(洛谷P1854)(动态规划)
传送门 文章目录 解析 问题 代码 解析 一道很正常的动态规划 dp[i][j]表示到第j个花瓶放了第j朵花的dp最优值 注意:是严格使第i朵放在j瓶 找到最优解递归输出即可 问题 又是初始化的问题! ...
- 洛谷1594 护卫队(动态规划) 解析
题目 护卫车队在一条单行的街道前排成一队,前面河上是一座单行的桥.因为街道是一条单行道,所以任何车辆都不能超车.桥能承受一个给定的最大承载量.为了控制桥上的交通,桥两边各站一个指挥员.护卫车队被分成几 ...
最新文章
- ASP.NET清除页面缓存的方法
- 竹子博客Linux,linux学习--美化自己的centos7
- Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案
- HDR 成像技术学习(三)—— LOFIC
- thinkphp 5数据库操作
- pip代理解决pip下载失败问题
- yii验证系统学习记录,基于yiicms(一)写的太长了,再写一篇(二)
- 面试题7:重建二叉树
- 十一、伪指令、数据类型、操作符
- 毫米波雷达障碍物检测算法介绍
- oracle 10个表循环10次,oracle10g for 循环 嵌套
- 跳表 skipList
- 来访登记系统源码_ZKTeco|智能访客管理系统
- 【手势识别】基于matlab PCA+LDA手语检测识别【含Matlab源码 1551期】
- vue 后台翻译_vue - 实战项目 - 在线翻译
- win7便笺重启计算机后还有吗,win7里的便签功能关机重启电脑后还有吗?
- linux下hg无法运行_linux下Mercurial Hg的配置方法
- Python多继承及MRO顺序
- 单路视频编码器怎么使用
- 互联网行业的裁员潮;程序员到35岁是个坎儿!
热门文章
- 一篇博客读懂设计模式之---委派模式
- java callable接口_Java多线程之Callable接口的实现有返回值的线程
- java反射 Method
- python中的zip是什么意思_Python的zip()函数是什么
- python mysql查表_python进阶(十、mysql:单表查询)
- 《SpringCloud超级入门》使用Eureka编写服务消费者《十一》
- mulitpartfile怎么接收不到值_手机有时接收不到微信消息通知,怎么办?超全解决方案...
- 济源一中2021高考成绩查询入口,济源一中2019高考成绩喜报、一本二本上线人数情况...
- Redis ops详解
- Python: ufunc ‘bitwise_xor‘ not supported for the input types,....