题解:CF186B Growing Mushrooms

· · 题解

一道模拟题,因为最后要输出编号和值,所以使用结构体解题会更好。

我们算出如果先使用速度 a_i,后使用速度 b_i 可生长的高度,和如果先使用速度 b_i,后使用速度 a_i 可生长的高度,取一个最大值就好了。

难点在于如何算,我们以先使用速度 a_i,后使用 b_i 为例。我们先算出使用速度 a_i 时,蘑菇上升了 t_1\times a_i 米,但是休息时间它会下降,下降的高度就为刚刚上升的高度的 k\% ,计算方算就为 t_1\times a_i\times \frac{k}{100}。后使用 b_i 的蘑菇高度又上升了 t_2\times b_i,把两个高度相加再减去下降的高度即可。那么我们以先使用速度 a_i,后使用 b_i 的公式就为 a_i \times t_1\times\frac{100-k}{100}+b_i\times t_2,注意答案该开始时答案要 \times1.00,不然会出现精度误差。

如果先使用速度 b_i,后使用速度 a_i 可生长的高度,计算方式与先使用速度 a_i,后使用 b_i 的计算方式同理,公式仅需将 a_i 和 b_i 的位置交换一下,就为 b_i \times t_1\times \frac{100-k}{100}+a_i\times t_2。最后取两个的最大值就是这个蘑菇的最终最大高度。

算完所有的后从大到小排序,依此输出编号和最终最大高度即可,注意换行。