Programming Contest 2023(AtCoder Beginner Contest 331)E题 Set Meal --- 题解

目录

 E题  Set Meal 

题目大意:

思路:(在求最大时和最小时,如果要求查询代价较小时,可以使用优先队列)

代码:


 

 E题  Set Meal 

E - Set Meal (atcoder.jp)

题目大意:

先给出n个主菜,m个配菜,然后ai(1<=i<=n)为第i个主菜的价值,bj(1<=j<=m)为第j个配菜的价值,然后套餐的定义是一个主菜一个配菜,问这n个主菜和m个配菜组成的套餐中,最贵的套餐是多少钱,其中有L个套餐组合是不合法的。

思路:(在求最大时和最小时,如果要求查询代价较小时,可以使用优先队列)

这道题其实很简单,主要难点就是如何存放这L个不合法的数据,让其在寻优的时候方便查询,这里用到的是HashSet。

寻优的方法,先将配菜进行排序,然后n个主菜都与最贵的配菜进行配对,这个配对组合使用优先队列(大根堆) 来进行存放,弹出的栈顶元素就是当前最贵套餐,弹出后判断是否为合法套餐,如果不是则让这个主菜,继续与下一个配菜配对并加入优先队列。

代码:

import java.util.*;/*** @ProjectName: study3* @FileName: Ex38* @author:HWJ* @Data: 2023/12/3 10:10*/
public class Ex38 {public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();int m = input.nextInt();long l = input.nextLong();HashSet<Node> nodes = new HashSet<Node>();int[] a = new int[n + 1];int[][] b = new int[m + 1][2];for (int i = 0; i < n; i++) {a[i + 1] = input.nextInt();}for (int i = 0; i < m; i++) {b[i + 1][0] = input.nextInt();b[i +1][1] = i+1;}for (int i = 0; i < l; i++) {int c = input.nextInt();int d = input.nextInt();nodes.add(new Node(c, d));}Arrays.sort(b, 1, m + 1,((o1, o2) -> {return o2[0] - o1[0];}));HashMap<Integer, Integer> map = new HashMap<>();for (int i = 1; i <= m; i++) {map.put(i, b[i][1]);}PriorityQueue<Node> nodes1 = new PriorityQueue<>(new Comparator<Node>() {@Overridepublic int compare(Node o1, Node o2) {return (a[o2.a] + b[o2.b][0]) - (a[o1.a] + b[o1.b][0]);}});for (int i = 1; i <= n; i++) {nodes1.add(new Node(i, 1));}while (true){Node cur = nodes1.poll();if (nodes.contains(new Node(cur.a, map.get(cur.b)))){if (cur.b == m) continue;else nodes1.add(new Node(cur.a, cur.b + 1));}else {System.out.println(a[cur.a] + b[cur.b][0]);break;}}}public static class Node{int a;int b;public Node(int a, int b) {this.a = a;this.b = b;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Node node = (Node) o;return a == node.a && b == node.b;}@Overridepublic int hashCode() {return Objects.hash(a, b);}}
}

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

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

相关文章

知识图谱07——图片中表格开源ocr识别

对比了多种ocr识别算法,最终选择了百度paddle官方的ocr算法 在所在的虚拟环境下运行 pip install paddleocr --userfrom paddleocr import PaddleOCR import os import csv# 创建 PaddleOCR 对象 ocr = PaddleOCR(use_gpu=True) # 无gpu时选择False# 指定图片文件夹和结果保…

编程怎么学才能快速入门,分享一款中文编程工具快速学习编程思路,中文编程工具之边条主控菜单构件简介

编程怎么学才能快速入门&#xff0c;分享一款中文编程工具快速学习编程思路&#xff0c;中文编程工具之边条主控菜单构件简介 一、前言 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程编程系统化教程链接https://jywxz.blog…

SALib敏感性分析入门实践笔记

1. 敏感性分析 敏感性分析是指从定量分析的角度研究有关因素发生某种变化对某一个或一组关键指标影响程度的一种不确定分析技术。 其实质是通过逐一改变相关变量数值的方法来解释关键指标受这些因素变动影响大小的规律。 敏感性因素一般可选择主要参数&#xff08;如销售收入、…

autojs-ui悬浮按钮模板

注释很详细&#xff0c;直接上代码 涵盖很多常用知识点&#xff0c;也可当知识点看 运行效果长这样&#xff1a; 开始按钮相当于开关&#xff0c;按钮内容会随点击变换控制台按钮可让运行框显示或隐藏退出按钮退出程序并在3s后关闭运行框只需在对应函数内添加需要实现的内容即可…

云服务器网站遇到HTTPS CC攻击了,有什么办法吗?

目前网站使用SSL证书&#xff0c;用443端口的情况非常普遍&#xff0c;大多数网站&#xff0c;用户都是会选择用证书&#xff0c;这样不仅可以提供数据传输的安全性&#xff0c;增强用户信任和品牌形象&#xff0c;还可以提高网站在搜索结果中的排名&#xff0c;从而增加流量和…

算法复习,数据结构 ,算法特性,冒泡法动态演示,复杂度,辗转相除法*,寻找最大公因数

算法复习 知识点 1. 程序 数据结构 算法 2. 算法&#xff1a; 求解问题的策略数据结构&#xff1a;问题的数学模型程序&#xff1a;微计算机处理问题编制的一组指令 3. **特性 ** 有穷性&#xff1a;算法在执行有穷步后能结束确定性&#xff1a;每一指令有确切的含义&a…

2023年12月4日支付宝蚂蚁庄园小课堂小鸡宝宝考考你今日正确答案是什么?

问题&#xff1a;你知道电杆上安装的“小风车”有什么用途吗&#xff1f; 答案&#xff1a;防止鸟类筑巢 解析&#xff1a;小风车一般做成橙色&#xff0c;因为橙色是一种可令野鸟产生恐慌感的颜色&#xff1b;小风车在转动时&#xff0c;会发出令野鸟害怕的噪声&#xff1b;…

LLM推理部署(四):一个用于训练、部署和评估基于大型语言模型的聊天机器人的开放平台FastChat

FastChat是用于对话机器人模型训练、部署、评估的开放平台。体验地址为&#xff1a;https://chat.lmsys.org/&#xff0c;该体验平台主要是为了收集人类的真实反馈&#xff0c;目前已经支持30多种大模型&#xff0c;已经收到500万的请求&#xff0c;收集了10万调人类对比大模型…

好题记录:

好题记录&#xff1a; 1:2:3&#xff1a;三级目录 1: 下面代码的结果是&#xff1a;&#xff08; &#xff09; 下面代码的结果是&#xff1a;&#xff08; &#xff09;#include <stdio.h> int main() {int arr[] {1,2,3,4,5};short *p (short*)arr;int i …

138. 随机链表的复制 --力扣 --JAVA

题目 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。新节点…

4个解决特定的任务的Pandas高效代码

在本文中&#xff0c;我将分享4个在一行代码中完成的Pandas操作。这些操作可以有效地解决特定的任务&#xff0c;并以一种好的方式给出结果。 从列表中创建字典 我有一份商品清单&#xff0c;我想看看它们的分布情况。更具体地说&#xff1a;希望得到唯一值以及它们在列表中出…

力扣labuladong——一刷day64

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣515. 在每个树行中找最大值二、力扣637. 二叉树的层平均值三、力扣958. 二叉树的完全性检验 前言 二叉树大部分题目都可以用递归的算法解决&#xff0c…

uniapp 微信小程序连接蓝牙卡死

解决方法&#xff0c;需要同意隐私保护协议&#xff0c;否则不能开启蓝牙权限和定位权限&#xff0c;会导致定位失败

实用工具网站合集值得收藏![搜嗖工具箱]

最近一段时间有点忙&#xff0c;一直没有更新在此给大家说声抱歉哈&#xff0c;有些小伙伴儿私信说想要用到的工具&#xff0c;茶壶儿也会尽可能满足大家&#xff01;今天我们要分享的工具主要有以下几款&#xff0c;我们来一起看一下吧&#xff1f; 一帧秒创 https://aigc.y…

万界星空科技灯具行业MES介绍

中国是LED照明产品最大的生产制造国&#xff0c;如今&#xff0c;我国初步形成了包括LED外延片的生产、LED芯片的制备、LED芯片的封装以及LED产品应用在内的较为完超为产业链&#xff0c;随着LED照明市场渗诱率的快速警升&#xff0c;LED下游应用市场将会越来越广阔。这也将推动…

电机工厂怎么才能有效的管理生产?

电机工厂要想更有效地管理&#xff0c;可以从以下几个方面入手&#xff1a;采用数字化软件管理工具 数字化软件管理工具可以帮助电机工厂实现工艺流程自动化、数据管理、生产计划排程等。例如&#xff0c;采用ERP&#xff08;企业资源计划&#xff09;系统可以协调管理生产过程…

SpringCloud Gateway

目录 一、gateway简介二、gateway快速入门2.1 引入依赖2.2 编写启动类2.3 编写基础配置和路由规则 三、断言工厂四、过滤器工厂4.1 路由过滤器的种类4.2 请求头过滤器4.3 默认过滤器 五、全局过滤器5.1 全局过滤器作用5.2 自定义全局过滤器5.3 过滤器执行顺序 六、跨域问题6.1 …

MySQL Shell拷贝一个库到一个新库

MySQL Shell拷贝一个库到一个新库 dump-schemas还是dump-tables导入是否skipBinlog实操&#xff1a;导出和导入导入时可能的报错 ⛵️场景&#xff1a;从同一台MySQL服务器的testdb中导出所有表。新建一个库testdb23&#xff0c;将导出的备份导入新建的testdb23库。 dump-schem…

Sailfish OS 移动操作系统

Jolla 是一家曾经致力于开发智能手机和平板电脑的公司&#xff0c;但是这些产品并没有取得成功。后来 Jolla 将重心转向了基于 Linux 的 Sailfish OS&#xff08;旗鱼&#xff09;&#xff0c;并将其应用于现有设备上。Sailfish OS 是由 Jolla 在 MeeGo 基础上开发的移动操作系…

[题] The sum problem # 数论 # 因数

题目 The sum problem 题解 参考博客&#xff1a; The sum problem(hdu 2058)解题报告 高斯公式&#xff1a; 12…nn*(n1)/2 sum(a,b)定义为从a到b的总和。 目标&#xff1a;求a, b。 sum(a,b)sum(1,b) –sum(1,a-1) 令ca-1&#xff0c; 代入 sum(a,b)M&#xff0c; 得到 …