美食大赛的题解

目录

原题描述:

题目描述:

输入格式:

输出格式:

样例输入:

样例输出:

数据规模: 

题目大意:

主要思路:

注:

代码:


原题描述:

题目描述:

美食城正在举行一年一度的美食大赛。小 Q 是其中一位参赛选手,他有 n 个食材,第 i个食材做成菜所需要的时间为 c_i。由于新鲜度的问题,如果第 i个食材在t时间时才被做成菜,那么这道菜的美味度为 a_i-t\times b_i,其中 a_ib_i 是给定的参数。大赛时间紧张,总共只有 T 的时间。小 Q 想在 T 时间内做出的菜的美味度之和尽可能大,你能帮帮他吗?

输入格式:

第一行包含两个整数 Tn

接下来三行,每行n 个数,分别表示 a_1~a_n,b_1~b_n,c_1~c_n

输出格式:

输出一行一个数,表示答案。

样例输入:

74 1

502

2

47

样例输出:

408

数据规模: 

1\le n \le 50,其余所有数都不超过10^5

题目大意:

给你三个数组,代表n个食物,让你选择先后顺序,然后算出最优值。

主要思路:

这个题目看上去就是01背包问题,但是这不完全是01背包问题,因为它和先后顺序有关:

设有两个食物,x,y,已经耗了p的时间。

如果先煮x,再煮y。则价值为:a_x-(p+c_x) \times b_i+a_y-(p+c_x+c_y) \times b_y  设为①

如果先煮y,再煮x。则价值为:a_y-(p+c_y) \times b_y + a_x-(p+c_y+c_x)\times b_x 设为②

如果想让①>②,那化简不等式:就是c_x*b_y<c_y*b_x

所以我们根据这个排个序,再01背包就好了

注:

我们可以边01背包,边记录答案,这样就不用枚举了。

代码:

#include<bits/stdc++.h>
using namespace std;
struct m{long long a,b,c;//每种食物的属性
}x[100010];
int n,t;
long long dp[100010];
long long ans;
bool cmp(m a,m b)
{return a.c*b.b<a.b*b.c;//排序
}
int main()
{
//	freopen("sample (44).in","r",stdin);cin>>t>>n;for(int i=1;i<=n;i++){cin>>x[i].a;}for(int i=1;i<=n;i++){cin>>x[i].b;}for(int i=1;i<=n;i++){cin>>x[i].c;}sort(x+1,x+1+n,cmp);for(int i=1;i<=n;i++){for(int j=t;j>=x[i].c;j--){dp[j] = max(dp[j],dp[j-x[i].c]+x[i].a-j*x[i].b);//经典的01背包转移方程ans = max(ans,dp[j]);//边做边记录}}cout<<ans;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

合并表记录

描述 数据表记录包含表索引index和数值value&#xff08;int范围的正整数&#xff09;&#xff0c;请对表索引相同的记录进行合并&#xff0c;即将相同索引的数值进行求和运算&#xff0c;输出按照index值升序进行输出。 提示: 0 < index < 11111111 1 < value < …

Uniapp软件库全新带勋章功能(包含前后端源码)

源码介绍&#xff1a; Uniapp开发的软件库全新带勋章功能&#xff0c;搭建好后台 在前端找到 util 这个文件 把两个js文件上面的填上自己的域名&#xff0c;电脑需要下载&#xff1a;HBuilderX 登录账号 没有账号就注册账号&#xff0c; 然后上传文件&#xff0c;打包选择 “…

Java Jar包指令以及运行Jar包

1.打包指令 要打包 JAR 文件&#xff0c;可以使用 Java 开发工具包&#xff08;JDK&#xff09;提供的 jar 命令。以下是使用 jar 命令打包 JAR 文件的基本语法&#xff1a; jar cf <jar文件名>.jar <文件或目录>其中&#xff0c;<jar文件名>是你要创建的 …

PrestoSQL语法及优化

PrestoSQL语法及优化 1、PrestoSQL概述2、PrestoSQL语法2.1、PrestoSQL数据类型2.2、关键字和标识符2.3、PrestoSQL注释2.4、PrestoSQL语法2.5、PrestoSQL例程2.6、PrestoSQL使用常见问题3、PrestoSQL优化3.1、存储优化3.2、查询优化3.3、多数据源联合查询1、PrestoSQL概述 202…

无线充电Qi通信协议分析

1 工作原理 无线充电通信采用的是backscatter调制方式&#xff0c;简单来说就是一种负载调制方式&#xff0c;类似于RFID的原理。并且无线充电过程主要是有Power Receiver&#xff08;一般指手机&#xff09;控制&#xff0c;而Power Transmitter&#xff08;充电板&#xff09…

力扣139. 单词拆分

动态规划 思路&#xff1a; 假设 dp[i] 为单词前 i 个字符能否被拆分的结果&#xff1b;假设最近的一个单词分割点 j&#xff0c;如果 dp[i] 能够被拆分&#xff0c;则 dp[j] 能被拆分&#xff0c;并且 s[j, i - 1] 在字典中&#xff1b;即状态转移方程&#xff1a; dp[i] dp…

js 有关递归简单介绍

递归&#xff1a;指调用自身的函数 重点&#xff1a;递归函数必须有可以终止递归调用的语句&#xff0c;否则会导致内存溢出 递归的性能不好&#xff0c;因为在递归终止前&#xff0c;JavaScript引擎会为每一次递归分配一块内存以存储栈帧&#xff0c;随着递归的深入&#xff…

基于双树复小波变换和稀疏表示的多光谱和彩色图像融合算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 双树复小波变换原理 4.2 稀疏表示原理 4.3 基于双树复小波变换和稀疏表示的图像融合算法 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序…

Redis 主从复制源码分析

前置学习&#xff1a;Redis server启动源码-CSDN博客

react hooks之useRef和useImperativeHandle

为什么这两个一起写&#xff0c;是因为这两个关联性很大&#xff0c;逐一介绍。 一&#xff1a;useRef 1、作用&#xff1a;用于在函数组件中创建一个持久化的引用变量。这个引用变量可以在组件的多次渲染之间保持不变&#xff0c;并且可以访问和修改 DOM 元素或其他组件实例…

C++学习笔记(十四)

一、运算符重载 运算符重载概念&#xff1a;对已有的运算符重新进行定义&#xff0c;赋予其另一种功能&#xff0c;以适应不同的数据类型 1.1 加号运算符重载 作用&#xff1a;实现两个自定义数据类型相加的运算 #include <iostream>using namespace std;class Per…

补充回答一些关于枚举类型的问题

补充回答一些关于枚举类型的问题 1.枚举类型在什么时候使用 枚举类型在以下情况下特别有用&#xff1a; 有限的离散值集合&#xff1a; 当变量的取值只有有限且离散的几个选项时&#xff0c;使用枚举类型能够提高代码的可读性。例如&#xff0c;星期几、月份、颜色等。 enum W…

讲解一手CSRF,如何防御CSRF

简介&#xff1a; CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;是一种网络安全漏洞&#xff0c;它允许攻击者通过欺骗用户在当前已登录的Web应用程序上执行未经用户授权的操作。 攻击者利用用户在目标网站上已经建立的身份认证&#xff…

Vue2面试题:说一下vue2的生命周期?

创建&#xff1a; beforecreate: 实例创建前 此阶段的data、methods、computed、watch的数据和方法不能被访问 created: 实例创建完成后 此阶段完成数据监听&#xff0c;可以使用数据、更改数据。无法与Dom进行交互&#xff0c;想要的话可以通过nextTick来访问。 挂载&#xff…

Vue 双向绑定:让数据与视图互动的魔法!(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

大数据监控

HBase 监控 {name“RegionServer”,sub“Server”,} irate(hadoop_hbase_totalrequestcount[5m]) irate(hadoop_hbase_totalrequestcount{instanceName“hacluster4”}[2m]) https://blog.csdn.net/Samooyou/article/details/129275640 https://www.tencentcloud.com/zh/doc…

【python笔记】requests模块基础总结

前言 菜某笔记总结&#xff0c;如有错误请指正。 requests用途 主要是用于发送网络请求 Requests库的主要方法和属性 rrequests.get() Response Request 对象 对象 r.cookies #打印cookie r.content #常用于图像视频等 以上内容来自2_哔哩哔哩_bilibili 发…

OpenCV中vector<Mat>数据存储问题

问题&#xff1a;定义数组Mat后&#xff0c;通过指针/取元素对Mat数组数据进行修改&#xff0c;会遇到深浅拷贝问题。 原因是&#xff1a;push_back调用的是Mat的浅拷贝函数来拷贝数据&#xff0c;数据共享。 一、浅拷贝 //注意&#xff1a;浅拷贝 - 不复制数据只创建矩阵头&…

【Netty的线程模型】

Netty的线程模型 Netty的线程模型知识拓展单Reactor单线程模型单Reactor多线程模型主从Reactor模型 Netty的线程模型 Netty通过Reactor模型基于多路复用器接收并处理用户请求的&#xff0c;多路复用IO模型参考&#xff1a; 多路复用IO模型: 操作系统的IO模型有哪些&#xff1f…

WindowChrome使用之最大化窗口拖动失败

背景&#xff1a;今天遇到一个奇怪的问题&#xff0c;窗口最大化之后&#xff0c;从屏幕外开始手指移动到窗口标题栏&#xff0c;窗口不跟随手指移动。 对WindowChrome并不是很了解&#xff0c;查了查文档&#xff0c;知道了WindowChrome是什么&#xff0c;怎么使用。 官方文档…