题目描述
小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V 个普通金
属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V 时,无法继续冶炼。
现在给出了 N 条冶炼记录,每条记录中包含两个整数 A 和 B,这表示本次投入了 A 个普通金属 O,最终冶炼出了 B 个特殊金属 X。每条记录都是独立
的,这意味着上一次没消耗完的普通金属 O 不会累加到下一次的冶炼当中。
根据这 N 条冶炼记录,请你推测出转换率 V 的最小值和最大值分别可能是多少,题目保证评测数据不存在无解的情况。
(碎碎念:感觉蓝桥杯近年的题目好像是比以前的题目灵活很多,感觉更加偏向于思维,难度嘛,,越来越难了)
思路
A个金属转化为B个特殊金属,转化率为V。
即需要满足A/V==B;
最小值:V取得越小(分母),B取得越大,直到最多B+1的时候为边界,所以V的最小值为A/(B+1)。但是边界是不能取的,所以需要再稍微大一点,即为A/(B+1)+1。为了使所有的输入数据都满足,则需要取这组数据中的最大值。
最大值:同理,V要越大,A同样要越大。但是最大只能为A,所以最多为A/B。同样取最小值以满足所有数据。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;cin>>n;
int mi=0,mx=INT_MAX;
while(n--){
int a,b;cin>>a>>b;
int v=(a+b-1)/b;
mi=max(mi,a/(b+1)+1);
mx=min(mx,(a)/b);
}
cout<<mi<<' '<<mx;
}