博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷p1417烹饪方案
阅读量:3948 次
发布时间:2019-05-24

本文共 616 字,大约阅读时间需要 2 分钟。

在这里插入图片描述

这个题与普通的01背包问题相比,价值不是固定的,而是随时间变化的。对于1和2两件食材,可能产生的美味值为:
a1-(t1+t2)b1+a2-t2b2 1
a1-t1*b1+a2-(t1+t2)*b2 2

要在保证美味值最大的情况下,要使a食材比b食材先做,必须满足的条件为第1个式子大于第2个式子,化简后是t1b2<t2b1。

然后我们按这个顺序排好,就保证了在最大美味值的情况下,如果选到1和2,那么1一定是在选在2前面。
就是01背包问题了。

代码如下:

#include
using namespace std;int t,n;long long dp[100007];struct node{
long long st; long long cost; long long time;}a[57];bool cmp(node q,node w){
return q.time*w.cost
=a[i].time;j--) dp[j]=max(dp[j],dp[j-a[i].time]+a[i].st-j*a[i].cost); long long ans=0; for(int i=0;i<=t;i++) ans=max(ans,dp[i]); printf("%lld\n",ans); return 0;}

转载地址:http://tsgwi.baihongyu.com/

你可能感兴趣的文章
linux学习之 limit资源限制ulimit 命令
查看>>
Java.lang.IllegalStateException: Failed to close the XContentBuilder
查看>>
telnet连接socket server
查看>>
es 在 7.X版本中去除type的概念
查看>>
elasticsearch bug Synchronize WriteReplicaResult callbacks
查看>>
java内存布局
查看>>
java常用技术栈
查看>>
git 撤销commit
查看>>
redis-缓存失效三种策略(FIFO 、LRU、LFU)
查看>>
jvm参数之堆转储配置
查看>>
pg客户端连接报错:不支援 10 验证类型。请核对您已经组态 ..
查看>>
Linux学习之常用高级命令
查看>>
java的三种随机数生成方式
查看>>
2021-01-21对map进行key或者value排序
查看>>
ConcurrentHashMap 1.7和1.8的区别
查看>>
try-catch-finally执行顺序及语句中对变量进行赋值的问题
查看>>
阻塞锁与自旋锁
查看>>
Java中的<< 和 >> 和 >>> 详细分析
查看>>
Java中字节Byte和位Bit的关系及最小值最大值表示
查看>>
spring启动时只执行一次的方法实现
查看>>