题目:https://www.luogu.org/problemnew/show/P1417

与普通的01背包不同的一点是加入物品的顺序对结果有影响,这里可以考虑贪心的想法,把对全局影响最小的物品排在前面;

排序不仅要考虑每件物品自身的时间大小,还要考虑对后面计算时的影响;

可以先从只有两个物品排序考虑,若有x和y,分两种情况:

1.x排在y前面:价值总和=(x.a-x.b*x.c)+(y.a-y.b*y.c-y.b*x.c);

2.y排在x前面:价值总和=(y.a-y.b*y.c)+(x.a-x.b*x.c-x.b*y.c);

可以看到唯一的不同就是减去(y.b*x.c)还是(x.b*y.c);

所以排序基准为:y.b*x.c<y.c*x.b;

代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int t,n;
long long f[100005],mx;
struct N{long long a,b,c;
}m[55];
bool cmp(N x,N y)
{return y.b*x.c<y.c*x.b;
}
int main()
{scanf("%d%d",&t,&n);for(int i=1;i<=n;i++)scanf("%lld",&m[i].a);for(int i=1;i<=n;i++)scanf("%lld",&m[i].b);for(int i=1;i<=n;i++)scanf("%lld",&m[i].c);sort(m+1,m+n+1,cmp);for(int i=1;i<=n;i++)for(long long j=t;j>=0;j--)if(j>=m[i].c)//不是>! f[j]=max(f[j-m[i].c]+m[i].a-m[i].b*j,f[j]);for(long long i=0;i<=t;i++)if(f[i]>mx)mx=f[i];printf("%lld",mx);return 0;
}

  

转载于:https://www.cnblogs.com/Zinn/p/8391768.html

P1417烹调方案——背包问题中的排序相关推荐

  1. 【每日DP】day4 P1417 烹调方案(奇怪的01背包增加了)难度⭐⭐⭐

    P1417 烹调方案 每件物品只有一个,很明显是01背包,但是价值的转换方式不同,是要求 ai−t∗bia_i-t*b_iai​−t∗bi​ 尽可能最大.普通的01背包的价值是不变的,而这一道题目中的 ...

  2. 洛谷P1417 烹调方案

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

  3. p1417 烹调方案_Java 8的烹调方式–拼图项目

    p1417 烹调方案 什么是Project Jigsaw:Project Jigsaw是使Java编译器模块知道的项目. 多年以来,Java API一直是单块的,即从代码的任何部分都可以平等地看到整个 ...

  4. P1417 烹调方案 (0/1背包+贪心)

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

  5. 洛谷 P1417 烹调方案

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

  6. P1417 烹调方案

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

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

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

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

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

  9. 烹调方案(洛谷-P1417)

    题目描述 一共有n件食材,每件食材有三个属性,ai,bi和ci,如果在t时刻完成第i样食材则得到ai-t*bi的美味指数,用第i件食材做饭要花去ci的时间. 众所周知,gw的厨艺不怎么样,所以他需要你 ...

最新文章

  1. 下列关于python的描述正确的是-下列关于Python的说法,错误的是()。_学小易找答案...
  2. WordPress在nginx下的URL重写规则
  3. linux运维面板_phpstudy linux web面板(小皮面板)V0.2版本正式发布
  4. python爬虫消费者与生产者_Condition版生产者与消费者模式
  5. AfxParseURL
  6. VoltDB培训PPT一则
  7. pcl 使用gpu计算法向量_异构计算系列文章(一):定义、场景及局限性
  8. 实现多楼层,每个楼层多房间,上下拖动切换楼层,左右拖动查看其他房间
  9. C# WinForm开发系列 - ComboBox
  10. 编程实现strcpy函数
  11. 如何使用科来网络分析系统过滤数据包内容
  12. 电阻值识别法(色环法、数码法)
  13. 常用APP签名存档以及获取签名的几种方式介绍
  14. WebSphere 安装部署,发布web应用
  15. dreamware html中加入flv,Dreamweaver插入FLV文件技巧
  16. 工程师软技能~聊聊价值,价值观和价值积累
  17. 实例011 阳阳买苹果
  18. 云运维拓扑图_云运维的核心是什么?
  19. so-vits-svc3.0 中文详细安装、训练、推理使用教程
  20. 计算机组成与系统结构实验-基于微程序控制的CPU设计

热门文章

  1. 几种实现统计表的方法
  2. IP组播---IGMP、MLD、IGMP SSM Mapping、IGMP Snooping详解
  3. AXI接口的MIG测试【MIZ7035学习】
  4. 直播代码,python的隐式继承
  5. ICU病房,安科瑞电气医用隔离电源系统辅助供电项目
  6. Google春运交通图有感
  7. 今天去参加会议,遇见索尼(日本)面试
  8. 日常小结-java静态类及其应用
  9. BEV图像处理对自动驾驶系统的性能优化
  10. Linux命令详解用法_history