七月月赛T3题解

· · 题解

Source & Knowledge

2024 年 7 月语言月赛,由洛谷网校入门计划/基础计划提供。

题目大意

输入整数 n,和一些 a,b,希望你求出哪组 \frac{b}{a} 的值最大,输出其编号,如果出现最大值相同的情况则输出 a 值较小的那组的编号。

题目分析

本题考察循环结构和分支的运用。

我们设目前 \frac{b}{a} 的最大值是 maxn,与 maxn 对应的 amaxa,对应的店的编号为 ans,根据题意对于每组输入的 a_i,b_i 有两种情况可能使答案更新,第一种是当前给出的 \frac{b_i}{a_i}maxn 大,第二种是当前给出的 \frac{b_i}{a_i}maxn 一样大,同时 a 的值比 maxa 小,那么我们需要将 maxn 更新为当前输入的 a_i,b_i 对应的 \frac{b_i}{a_i},将 maxa 更新为当前输入的 a_i,将 ans 更新为 i。在循环结束后输出 ans 即可。

值得注意的是因为题目种的 ab 并不保证整除,所以 maxn 必须使用浮点数来计算,比较和存储。而对于浮点数比较大小我们不能直接使用两个等号来比较,而应该使用两数差的绝对值小于一个极小值的方法,注意到题面里 a_ib_i 的大小在 10^9 以内,所以我们应将这个极小值设定为 10^{-10} 左右来保证比较时不会因为精度问题导致错误。

视频题解