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

题目描述

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

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

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

输入格式

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

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

输出格式

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

输入输出样例

输入

复制代码
3
75 3
53 2
59 2

输出

复制代码
20 25

说明/提示

【样例说明】

当 V=20 时,有:⌊2075​⌋=3,⌊2053​⌋=2,⌊2059​⌋=2,可以看到符合所有冶炼记录。

当 V=25 时,有:⌊2575​⌋=3,⌊2553​⌋=2,⌊2559​⌋=2,可以看到符合所有冶炼记录。

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

【评测用例规模与约定】

对于 30% 的评测用例,1≤N≤102。

对于 60% 的评测用例,1≤N≤103。

对于 100% 的评测用例,1≤N≤104,1≤B≤A≤109。

蓝桥杯 2023 省赛 B 组 C 题。

思路:从题目中看就是求最大转化率V和最小转化率V,因为题目中说不会累加到下一次,都是独立的记录,所以我们每次先求出第i次的最大转化率和最小转化率,然后同时保存全部的最大最小值。

代码实现,仅供参考:

复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<limits.h>
#include<stdlib.h>
#include<math.h>
#include <stdbool.h>

int main()
{
	int n = 0; int max = INT_MAX; int min = INT_MIN;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		int o, x = 0; int a, b;
		scanf("%d %d", &o, &x);
		a = o / x;
		b = o / (x + 1) + 1;

		// 更新最大值 max(实际上是寻找最小的 a)
		if (a < max)
		{
			max = a;
		}
		// 更新最小值 min(实际上是寻找最大的 b)
		if (b > min)
		{
			min = b;
		}
	}

	printf("%d %d", min, max);

	return 0;
}
相关推荐
mysql学习中25 分钟前
数仓面试内容
面试·职场和发展
wuqingshun3141591 小时前
蓝桥杯 10.拉马车
数据结构·c++·算法·职场和发展·蓝桥杯·深度优先
Samuel-Gyx1 小时前
2025第十六届蓝桥杯python B组满分题解(详细)
python·职场和发展·蓝桥杯
一叶祇秋2 小时前
Leetcode - 周赛446
算法·leetcode·职场和发展
YuforiaCode6 小时前
第十四届蓝桥杯 2023 C/C++组 飞机降落
c语言·c++·蓝桥杯
YuforiaCode7 小时前
第十四届蓝桥杯 2023 C/C++组 平方差
c语言·c++·蓝桥杯
慕容青峰8 小时前
【蓝桥杯 2025 省 A 扫地机器人】题解
c++·算法·蓝桥杯·sublime text
玩转数据库管理工具FOR DBLENS8 小时前
项目预期管理:超越甘特图,实现客户价值交付
数据库·职场和发展·项目管理·产品经理·数据库开发·甘特图
@蓝莓果粒茶9 小时前
LeetCode第158题_用Read4读取N个字符 II
前端·c++·python·算法·leetcode·职场和发展·c#
骑驴看星星a9 小时前
P10416 [蓝桥杯 2023 国 A] XYZ
算法·职场和发展·蓝桥杯