【洛谷 P9240】[蓝桥杯 2023 省 B] 冶炼金属 题解(二分答案)

[蓝桥杯 2023 省 B] 冶炼金属

题目描述

小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V V V V V V 是一个正整数,这意味着消耗 V V V 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V V V 时,无法继续冶炼。

现在给出了 N N N 条冶炼记录,每条记录中包含两个整数 A A A B B B,这表示本次投入了 A A A 个普通金属 O,最终冶炼出了 B B B 个特殊金属 X。每条记录都是独立的,这意味着上一次没消耗完的普通金属 O 不会累加到下一次的冶炼当中。

根据这 N N N 条冶炼记录,请你推测出转换率 V V V 的最小值和最大值分别可能是多少,题目保证评测数据不存在无解的情况。

输入格式

第一行一个整数 N N N,表示冶炼记录的数目。

接下来输入 N N N 行,每行两个整数 A , B A,B A,B,含义如题目所述。

输出格式

输出两个整数,分别表示 V V V 可能的最小值和最大值,中间用空格分开。

样例 #1

样例输入 #1

3
75 3
53 2
59 2

样例输出 #1

20 25

提示

【样例说明】

V = 20 V=20 V=20 时,有: ⌊ 75 20 ⌋ = 3 , ⌊ 53 20 ⌋ = 2 , ⌊ 59 20 ⌋ = 2 \left\lfloor\frac{75}{20}\right\rfloor=3,\left\lfloor\frac{53}{20}\right\rfloor=2,\left\lfloor\frac{59}{20}\right\rfloor=2 2075=3,2053=2,2059=2,可以看到符合所有冶炼记录。

V = 25 V=25 V=25 时,有: ⌊ 75 25 ⌋ = 3 , ⌊ 53 25 ⌋ = 2 , ⌊ 59 25 ⌋ = 2 \left\lfloor\frac{75}{25}\right\rfloor=3,\left\lfloor\frac{53}{25}\right\rfloor=2,\left\lfloor\frac{59}{25}\right\rfloor=2 2575=3,2553=2,2559=2,可以看到符合所有冶炼记录。

且再也找不到比 20 20 20 更小或者比 25 25 25 更大的符合条件的 V V V 值了。

【评测用例规模与约定】

对于 30 % 30 \% 30% 的评测用例, 1 ≤ N ≤ 1 0 2 1 \leq N \leq 10^{2} 1N102

对于 60 % 60 \% 60% 的评测用例, 1 ≤ N ≤ 1 0 3 1 \leq N \leq 10^{3} 1N103

对于 100 % 100 \% 100% 的评测用例, 1 ≤ N ≤ 1 0 4 1 \leq N \leq 10^{4} 1N104 1 ≤ B ≤ A ≤ 1 0 9 1 \leq B \leq A \leq 10^{9} 1BA109

蓝桥杯 2023 省赛 B 组 C 题。


思路

首先,从输入中读取冶炼记录的数量,并存储每条记录的投入普通金属数目和冶炼出的特殊金属数目。

然后,使用二分搜索算法来找出可能的转换率的最大值和最小值。

对于最大值,设定初始搜索范围为0到无穷大。在每次迭代中,计算中间值,然后检查所有记录以确定是否所有的普通金属数量除以这个中间值都大于或等于对应的特殊金属数量。如果是,将搜索范围的下限设为中间值。否则,将搜索范围的上限设为中间值。当搜索范围的上下限差距小于1时,搜索结束,此时的下限即为可能的最大转换率。

对于最小值,设定初始搜索范围为0到无穷大。在每次迭代中,计算中间值,然后检查所有记录以确定是否所有的普通金属数量除以这个中间值都小于或等于对应的特殊金属数量。如果是,将搜索范围的上限设为中间值。否则,将搜索范围的下限设为中间值。当搜索范围的上下限差距小于1时,搜索结束,此时的上限即为可能的最小转换率。

最后,输出可能的最小转换率和最大转换率。


AC代码

#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;const int N = 1e5 + 7;
const int INF = 0x3f3f3f3f;int n;
int a[N], b[N];
int vmin, vmax;bool check1(int x) {// cout << x << "\n";for (int i = 1; i <= n; i++) {if (a[i] / x != b[i]) {return a[i] / x >= b[i];}}return true;
}bool check2(int x) {// cout << x << "\n";for (int i = 1; i <= n; i++) {if (a[i] / x != b[i]) {return a[i] / x <= b[i];}}return true;
}int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i] >> b[i];}int l, r;l = 0;r = INF;while (l + 1 < r) {int mid = (l + r) >> 1;if (check1(mid)) {l = mid;} else {r = mid;}}vmax = l;// cout << l << " " << r << "\n";l = 0;r = INF;while (l + 1 < r) {int mid = (l + r) >> 1;if (check2(mid)) {r = mid;} else {l = mid;}}vmin = r;// cout << l << " " << r << "\n";cout << vmin << " " << vmax << "\n";return 0;
}

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

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

相关文章

【Python2】---Jmeter工具的项目实战

环境:jdk ---1.8、1.11 Jmeter的安装视频在Jmeter入门已经写过 接口自动化前置条件:接口通了----才可以进入到接口自动化不需要做功能测试,但是做自动化测试前,务必要把单接口调试通(使用Jmeter或者Postman)接口自动化流程: 测试流程----…

产业园区如何实现数字化运营管理?

​在数字化浪潮席卷全球的今天&#xff0c;产业园区正经历着前所未有的变革&#xff0c;数字化运营管理成为各个园区转型升级的发力方向&#xff0c;它不仅能够提升园区的运营管理效率&#xff0c;还能够帮助园区提高服务效能、实现精准招商、增强决策效率&#xff0c;从而全面…

Redis实战—商户查询缓存

本博客为个人学习笔记&#xff0c;学习网站&#xff1a;黑马程序员Redis入门到实战 实战篇之商户查询缓存 目录 什么是缓存 添加Redis缓存 缓存更新策略 数据库缓存不一致解决方案 案例&#xff1a;给查询商铺的缓存添加超时剔除和主动更新策略 缓存穿透 案例&#xff1…

奇富科技:大数据任务从诊断到自愈的实践之路

一、为什么要做诊断引擎 毓数平台是奇富科技公司自主研发的一站式大数据管理、开发、分析平台&#xff0c;覆盖大数据资产管理、数据开发及任务调度、自助分析及可视化、统一指标管理等多个数据生命周期流程&#xff0c;让用户使用数据的同时&#xff0c;挖掘数据最大的价值。…

打造高效、安全的交易平台:开发流程与关键要素解析

在数字化时代&#xff0c;大宗商品交易平台开发/搭建已成为连接买家与卖家的桥梁&#xff0c;为无数企业和个人提供了便捷、高效的交易机会。然而&#xff0c;随着市场的竞争日益激烈&#xff0c;如何打造一个既符合用户需求又具备竞争力的交易平台&#xff0c;成为了众多开发者…

AUTOSAR汽车电子嵌入式编程精讲300篇-基于 CAN 总线的多 ECU 通信系统设计

目录 前言 国内外研究现状 国外研究现状 国内研究现状 2 CAN 总线技术

AIGC笔记--条件自回归Transformer的搭建

1--概述 1. 自回归 TransFormer 规定Token只能看到自身及前面的Token&#xff0c;因此需生成一个符合规定的Attention Mask&#xff1b;&#xff08;代码提供了两种方式自回归Attention Mask的定义方式&#xff09;&#xff1b; 2. 使用Cross Attention实现条件模态和输入模态之…

【GIT】git合并分支

假如目前我们处于dev分支 一、重点&#xff1a;我们在开发前必须养成pull的习惯 git pull origin dev二、开发完毕后执行以下命令&#xff0c;即可将代码push到远程仓库 git add . git commit -m 提交的备注信息 git push origin dev三、此时想将dev分支合并到master分支…

文件上传{session文件包含以及条件竞争、图片文件渲染绕过(gif、png、jpg)}

session文件包含以及条件竞争 条件&#xff1a; 知道session文件存储在哪里 一般的默认位置&#xff1a; /var/lib/php/sess_PHPSESSID /var/lib/php/sessions/sess_PHPSESSID /tmp/sess_PHPSESSID /tmp/sessions/sess_PHPSESSID ####在没做过设置的情况下一般都是存储在/var…

【数仓】flume软件安装及配置

相关文章 【数仓】基本概念、知识普及、核心技术【数仓】数据分层概念以及相关逻辑【数仓】Hadoop软件安装及使用&#xff08;集群配置&#xff09;【数仓】Hadoop集群配置常用参数说明【数仓】zookeeper软件安装及集群配置【数仓】kafka软件安装及集群配置【数仓】flume软件安…

解决WordPress更新插件或者更新版本报WordPress 需要访问您网页服务器的权限的问题

文章目录 前言一、原因二、解决步骤总结 前言 当对WordPress的插件或者版本进行更新时报错&#xff1a;要执行请求的操作&#xff0c;WordPress 需要访问您网页服务器的权限。 请输入您的 FTP 登录凭据以继续。 如果您忘记了您的登录凭据&#xff08;如用户名、密码&#xff09…

光线追踪7 - 抗锯齿(Antialiasing)

目前为止&#xff0c;如果你放大渲染出的图像&#xff0c;可能会注意到图像边缘的明显“阶梯状”效果。这种阶梯效果通常被称为“走样”或“锯齿”。当真实相机拍摄图片时&#xff0c;边缘通常没有锯齿&#xff0c;因为边缘像素是一些前景和一些背景的混合。请考虑&#xff0c;…

5. 链接和加载(linker and loader)

链接和加载(linker and loader)&#xff1a; linker即链接器&#xff0c;它负责将多个.c编译生成的.o文件&#xff0c;链接成一个可执行文件或者是库文件&#xff1b; loader即加载器&#xff0c;它原本的功能很单一只是将可执行文件的段拷贝到编译确定的内存地址即可&#x…

英福康INFICON残余气体RGA General Chinese中文培训PPT课件

英福康INFICON残余气体RGA General Chinese中文培训PPT课件

【树上倍增】【割点】 【换根法】3067. 在带权树网络中统计可连接服务器对数目

作者推荐 视频算法专题 本文涉及知识点 树上倍增 树 图论 并集查找 换根法 深度优先 割点 LeetCode3067. 在带权树网络中统计可连接服务器对数目 给你一棵无根带权树&#xff0c;树中总共有 n 个节点&#xff0c;分别表示 n 个服务器&#xff0c;服务器从 0 到 n - 1 编号…

Java | 在消息对话框中显示文本

首先需要导入JOptionPane类&#xff0c;JOptionPane类属于Swing组件中的一种&#xff0c;其导入方式如下&#xff1a; import javax.swing.JOptionPane;可以使用JOptionPane的showMessageDialog方法显示消息文本。 参数格式&#xff1a; JOptionPane.showMessageDialog(paren…

【C语言】指针详细解读2

1.const 修饰指针 1.1 const修饰变量 变量是可以修改的&#xff0c;如果把变量的地址交给⼀个指针变量&#xff0c;通过指针变量的也可以修改这个变量。 但是如果我们希望⼀个变量加上⼀些限制&#xff0c;不能被修改&#xff0c;怎么做呢&#xff1f;这就是const的作⽤。 …

AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.03.01-2024.03.05

论文目录~ 1.CLEVR-POC: Reasoning-Intensive Visual Question Answering in Partially Observable Environments2.Feast Your Eyes: Mixture-of-Resolution Adaptation for Multimodal Large Language Models3.MADTP: Multimodal Alignment-Guided Dynamic Token Pruning for …

RK3568平台开发系列讲解(基础篇)注册字符设备

🚀返回专栏总目录 文章目录 一、字符设备初始化二、字符设备的注册和注销三、实验代码沉淀、分享、成长,让自己和他人都能有所收获!😄 注册字符设备可以分为两个步骤: 字符设备初始化字符设备的添加一、字符设备初始化 字符设备初始化所用到的函数为 cdev_init(…),在对…