思路
首先,输入炼制记录数量,存储每条记录投入普通金属数目a[i]和冶炼出的金属数目b[i]。
然后用二分找出所有可能的转换率中的最大值与最小值。
对于最大值,设定初始搜索范围为0到无穷∞。每次算出中间值,再检查所有记录,如果所有普通金属数量除以中间值大于等于特殊金属数量,将上界改为中间值。否则,将下界改为中间值。上限、下限差距小于一时,循环结束,此时下界为最大转换率。
对于最小值,设定初始搜索范围为0到无穷∞。每次算出中间值,再检查所有记录,如果所有普通金属数量除以中间值小于等于特殊金属数量,将上界改为中间值。否则,将下界改为中间值。上限、下限差距小于1时,循环结束,此时下界为最小转换率。
最后,输出可能得最小转换率与最大转换率。
AC代码