蓝桥杯 冶炼金属

原题目链接


🔧 冶炼金属转换率推测题解

📜 原题描述

小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 1 个特殊金属 X X X

N N N 条冶炼记录,每条记录包含两个整数 A A A B B B,表示本次使用了 A A A 个普通金属 O O O,冶炼出了 B B B 个特殊金属 X X X

每次冶炼是独立的,剩余金属不会带到下一次。

现在,请你根据所有冶炼记录推测转换率 V V V最小可能值最大可能值

题目保证有解。


🧾 输入格式

第一行:整数 N(1 ≤ N ≤ 10^4)接下来的 N 行:每行两个整数 A, B(1 ≤ B ≤ A ≤ 10^9)

📤 输出格式

输出两个整数,表示可能的最小转换率 V V V 和最大转换率 V V V,用空格隔开。


🧪 输入样例

3
75 3
53 2
59 2

✅ 输出样例

20 25

💡 思路解析(基于你的代码)

本题要求找出使得每条记录都满足 ⌊ A i V ⌋ = B i \left\lfloor \frac{A_i}{V} \right\rfloor = B_i VAi=Bi 的所有 V V V,并输出其中的最小值和最大值。

你使用了两次二分查找

  • 第一次查最小合法 V V V(尽可能小);
  • 第二次查最大合法 V V V(尽可能大)。

🔁 判定逻辑:

  • 对于每个中间值 m i d mid mid,用 arr[i][0] / midarr[i][1] 做比较:
    • 如果大于 B i B_i Bi,说明 m i d mid mid 太小了,要增大;
    • 如果小于 B i B_i Bi,说明 m i d mid mid 太大了,要减小;
    • 否则说明该 m i d mid mid 是合法值。

📐 算法解析

  1. 设定二分范围 [ 1 , max ⁡ A i ] [1, \max A_i] [1,maxAi]
  2. 第一次二分找出满足条件的最小合法 V V V
  3. 第二次二分找出满足条件的最大合法 V V V
  4. 输出这两个值。

时间复杂度:

  • 每次二分最多 log ⁡ ( 10 9 ) \log(10^9) log(109) 次;
  • 每次判断遍历 N N N 条记录;
  • 总体复杂度约为 O ( N log ⁡ A m a x ) O(N \log A_{max}) O(NlogAmax)

💻 完整代码(原封不动)

#include<bits/stdc++.h>using namespace std;int main() {int N;cin >> N;vector<vector<int>> arr(N, vector<int>(2));int l = 1, r = 1, res1 = INT_MAX, res2 = INT_MIN, r_l, r_r;for (int i = 0; i < N; i++) cin >> arr[i][0] >> arr[i][1], r = max(r, arr[i][0]);r_l = l, r_r = r;while(r_l <= r_r) {int mid = (r_l + r_r) / 2;int code = 0;for (int i = 0; i < N && code == 0; i++) {if (arr[i][0] / mid > arr[i][1]) code = 1;if (arr[i][0] / mid < arr[i][1]) code = 2;}if (code == 0) res1 = min(res1, mid);if (code == 1) r_l = mid + 1;else r_r = mid - 1;}r_l = l, r_r = r;while(r_l <= r_r) {int mid = (r_l + r_r) / 2;int code = 0;for (int i = 0; i < N && code == 0; i++) {if (arr[i][0] / mid > arr[i][1]) code = 1;if (arr[i][0] / mid < arr[i][1]) code = 2;}if (code == 0) res2 = max(res1, mid);if (code == 2) r_r = mid - 1;else r_l = mid + 1;}cout << res1 << " " << res2;return 0;
}//by wqs

✅ 总结

这段代码巧妙地用了二分查找解决最大/最小合法值问题。

  • 第一次二分是找下界(合法的最小值);
  • 第二次二分是找上界(合法的最大值);
  • 每次判断只要符合全部记录,就尝试更新答案。

这种思路比直接取不等式交集更通用,也适用于更复杂的分段函数类问题。


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

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

相关文章

DreamO字节开源图像编辑框架

DreamO是由字节跳动联合北京大学深圳研究生院电子与计算机工程学院共同研发的统一图像定制生成框架&#xff0c;支持多样化的编辑任务。 看下介绍的核心功能&#xff0c;还是很厉害的&#xff0c;今天咱们来体验下。 有正常本地部署版的。 https://github.com/bytedance/Drea…

EM储能网关ZWS智慧储能云应用(11) — 一级架构主从架构

ZWS智慧储能云针对储能场景下不同的架构体系进行了兼容&#xff0c;可以适配用户面临的复杂现场环境&#xff0c;满足更深层次的管理和维护需求。 简介 储能系统包含PCS、BMS、EMS等多个组件&#xff0c;不同储能架构管理和决策方式也有不同。为了适配用户面临的复杂现场环境&…

从0开始一篇文章学习Nginx

Nginx服务 HTTP介绍 ## HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。 ## HTTP工作在 TCP/IP协议体系中的TCP协议上&#…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

Python SQLModel 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…

springboot根据部署服务器生成机器码+加密生成到期时间授权码设置项目在服务器的到期时间

生成机器码 首先需要在后端写个获取window或linux的机器码&#xff0c;根据CPU序列号和硬盘序列号(Windows)&#xff0c;拼接得到 /*** 操作系统的工具类*/ public class OSUtils {/*** 获取window or linux机器码** return*/public static String getOSNumber() {Map<Str…

Thumb-2指令集及其与STM32的关系

Thumb-2指令集及其与STM32的关系&#xff1a; 1. Thumb-2指令集是什么&#xff1f; 本质&#xff1a;Thumb-2是ARM公司设计的混合指令集架构&#xff0c;首次在ARMv7架构中引入&#xff08;如Cortex-M3/M4/M7&#xff09;。 核心创新&#xff1a; 融合了传统 32位ARM指令&…

Haption 力反馈遥操作机器人:6 自由度 + 低延迟响应,解锁精准远程操控体验

Haption自2001年成立以来&#xff0c;始终专注于力反馈设备与定制化解决方案的设计、研发及销售。作为工业级力反馈技术的先行者&#xff0c;其核心产品以高精度交互与可靠性著称&#xff0c;已与达索系统、空客、Orano 等行业头部企业达成深度合作&#xff0c;业务覆盖工程仿真…

C# ExcelWorksheet 贴图

C# ExcelWorksheet 贴图 在C#中,如果你想在Excel工作表中插入图片(例如,在ExcelWorksheet中贴图),你可以使用ClosedXML或EPPlus这样的库来操作Excel文件。下面我将分别介绍如何使用这两个库来实现这一功能。 使用ClosedXML 首先,确保你已经安装了ClosedXML包。你可以通…

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…

无人机EN 18031欧盟网络安全认证详细解读

EN 18031 是欧盟针对无线电设备发布的网络安全标准&#xff0c;于 2024 年 8 月正式发布&#xff0c;2025 年 1 月 30 日被列入《无线电设备指令》&#xff08;RED&#xff09;协调标准清单&#xff0c;并于 2025 年 8 月 1 日起强制执行。以下是对无人机 EN 18031 欧盟网络安全…

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…

Go 语言中switch case条件分支语句

1. 基本语法 package main import "fmt" func main() {var extname ".css"switch extname {case ".html":fmt.Println("text/html")case ".css":fmt.Println("text/css") // text/csscase ".js":fmt.…

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…

LLM基础2_语言模型如何文本编码

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 字节对编码(BPE) 上一篇博文说到 为什么GPT模型不需要[PAD]和[UNK]&#xff1f; GPT使用更先进的字节对编码(BPE)&#xff0c;总能将词语拆分成已知子词 为什么需要BPE&#xff1f; 简…

监控升级:可视化如何让每一个细节 “说话”

你有没有遇到过这样的情况&#xff1f; 监控画面里明明有“异常”&#xff0c;但值班人员愣是没发现&#xff1b; 报警响起却不知道具体发生了什么&#xff0c;只能靠猜、靠翻录像&#xff1b; 出了事回看录像&#xff0c;才发现线索早就在眼前&#xff0c;只是没人注意到………

单片机bootloader(APP的自我复制)

文章目录 Bootloader 中 APP 的自我复制与启动机制解析一、为什么要进行自我复制?二、程序整体结构概述三、汇编启动代码分析重点解释:四、C 语言部分分析核心功能:五、start\_app 函数:手动启动指定 APP六、总结七、适用场景Bootloader 中 APP 的自我复制与启动机制解析 …

浏览器工作原理11 [#] this:从JavaScript执行上下文视角讲this

引用 《浏览器工作原理与实践》 在上篇文章中&#xff0c;我们讲了词法作用域、作用域链以及闭包&#xff0c;并在最后思考题中留了下面这样一段代码 var bar {myName:"time.geekbang.com",printName: function () {console.log(myName)} } function foo() {le…