Java冶炼金属

# [蓝桥杯 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$ 可能的最小值和最大值,中间用空格分开。

## 样例 #1

### 样例输入 #1

```
3
75 3
53 2
59 2
```

### 样例输出 #1

```
20 25
```

## 提示

说明/提示

【样例说明】

当 V=20 时,有:⌊75/20⌋=3,⌊53/20⌋=2,⌊59/20⌋=2,可以看到符合所有冶炼记录。

当 V=25 时,有:⌊75/25⌋=3/⌊53/25⌋=2,⌊59/25⌋=2,可以看到符合所有冶炼记录。

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

【评测用例规模与约定】

对于 30%30% 的评测用例,1≤N≤10^2。

对于 60%60% 的评测用例,1≤N≤10^3。

对于 100%100% 的评测用例,1≤N≤10^4,1≤B≤A≤10^9。

import java.util.Arrays;
import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int[] min = new int[n];
		int[] max = new int[n];
		for(int i = 0;i < n;i++) {
			int a = scanner.nextInt();
			int b = scanner.nextInt();
			min[i] = (a / (b + 1)) + 1;
			max[i] = a / b;
		}
		Arrays.sort(min);
		Arrays.sort(max);
		System.out.print(min[n - 1] + " " + max[0]);
	}
}

解题思路:找到每条记录的最小值和最大值,之后求他们的交集,即在最小值中找最大,最大值中找最小。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值