题目: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烹调方案——动态规划:价值受时间影响相关推荐

  1. 洛谷 1417 烹调方案

    题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的 ...

  2. 洛谷P1417 烹调方案

    洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...

  3. 洛谷 P1417 烹调方案

    题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的 ...

  4. 洛谷 P1417 烹调方案 (01背包拓展)

    一看到这道题就是01背包 但是我注意到价值和当前的时间有关. 没有想太多,直接写,0分 然后发现输入方式不对-- 改了之后只有25分 我知道wa是因为时间会影响价值,但不知道怎么做. 后来看了题解,发 ...

  5. 洛谷—P1417 烹调方案(背包问题)

    解题思路: 如果没有b[i]这个属性的话就是明显的01背包问题. 现在考虑相邻的两个物品x,y.假设现在已经耗费p的时间,那么分别列出先做x,y的代价: a[x]-(p+c[x])*b[x]+a[y] ...

  6. 洛谷P1280 caioj 1085 动态规划入门(非常规DP9:尼克的任务)

    这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...

  7. 洛谷-省选斗兽场-动态规划1

    记 练习一下动态规划水题系列,防止脑子生锈. P1879 玉米田 题解 非常典型的状态压缩DPDPDP,先预处理出所有可行的状态SSS. 然后逐行DP" role="present ...

  8. 花店橱窗布置(洛谷P1854)(动态规划)

    传送门 文章目录 解析 问题 代码 解析 一道很正常的动态规划 dp[i][j]表示到第j个花瓶放了第j朵花的dp最优值 注意:是严格使第i朵放在j瓶 找到最优解递归输出即可 问题 又是初始化的问题! ...

  9. 洛谷1594 护卫队(动态规划) 解析

    题目 护卫车队在一条单行的街道前排成一队,前面河上是一座单行的桥.因为街道是一条单行道,所以任何车辆都不能超车.桥能承受一个给定的最大承载量.为了控制桥上的交通,桥两边各站一个指挥员.护卫车队被分成几 ...

最新文章

  1. ASP.NET清除页面缓存的方法
  2. 竹子博客Linux,linux学习--美化自己的centos7
  3. Spring Security OAuth2——自定义OAuth2第三方登录(Gitee)并与UsernamePassword登录关联解决方案
  4. HDR 成像技术学习(三)—— LOFIC
  5. thinkphp 5数据库操作
  6. pip代理解决pip下载失败问题
  7. yii验证系统学习记录,基于yiicms(一)写的太长了,再写一篇(二)
  8. 面试题7:重建二叉树
  9. 十一、伪指令、数据类型、操作符
  10. 毫米波雷达障碍物检测算法介绍
  11. oracle 10个表循环10次,oracle10g for 循环 嵌套
  12. 跳表 skipList
  13. 来访登记系统源码_ZKTeco|智能访客管理系统
  14. 【手势识别】基于matlab PCA+LDA手语检测识别【含Matlab源码 1551期】
  15. vue 后台翻译_vue - 实战项目 - 在线翻译
  16. win7便笺重启计算机后还有吗,win7里的便签功能关机重启电脑后还有吗?
  17. linux下hg无法运行_linux下Mercurial Hg的配置方法
  18. Python多继承及MRO顺序
  19. 单路视频编码器怎么使用
  20. 互联网行业的裁员潮;程序员到35岁是个坎儿!

热门文章

  1. 一篇博客读懂设计模式之---委派模式
  2. java callable接口_Java多线程之Callable接口的实现有返回值的线程
  3. java反射 Method
  4. python中的zip是什么意思_Python的zip()函数是什么
  5. python mysql查表_python进阶(十、mysql:单表查询)
  6. 《SpringCloud超级入门》使用Eureka编写服务消费者《十一》
  7. mulitpartfile怎么接收不到值_手机有时接收不到微信消息通知,怎么办?超全解决方案...
  8. 济源一中2021高考成绩查询入口,济源一中2019高考成绩喜报、一本二本上线人数情况...
  9. Redis ops详解
  10. Python: ufunc ‘bitwise_xor‘ not supported for the input types,....