有关的梗请移步某乎。真·百度之星
铜牌题,给 n n n个怪,每个怪需要打 b i b_i bi轮才能打死,在没被打死之前,每轮释放 a i a_i ai的伤害。求释放的最小伤害。
考虑两个怪,先打怪兽1:
b
1
∗
∑
a
i
+
b
2
∗
(
∑
a
i
−
a
1
)
b_1*\sum a_i +b_2*(\sum a_i -a_1)
b1∗∑ai+b2∗(∑ai−a1)
先打怪兽2,受到的伤害:
b
2
∗
∑
a
i
+
b
1
∗
(
∑
a
i
−
a
2
)
b_2*\sum a_i +b_1*(\sum a_i -a_2)
b2∗∑ai+b1∗(∑ai−a2)
若考虑伤害最小
b
1
∗
∑
a
i
+
b
2
∗
(
∑
a
i
−
a
1
)
<
b
2
∗
∑
a
i
+
b
1
∗
(
∑
a
i
−
a
2
)
b_1*\sum a_i +b_2*(\sum a_i -a_1) < b_2*\sum a_i +b_1*(\sum a_i -a_2)
b1∗∑ai+b2∗(∑ai−a1)<b2∗∑ai+b1∗(∑ai−a2)
⇒
b
1
∗
a
2
<
b
2
∗
a
1
\Rightarrow b_1*a_2 < b_2*a_1
⇒b1∗a2<b2∗a1
直接将
b
i
a
i
\dfrac{b_i}{a_i}
aibi排序可能会有精度问题,建议重载运算符后用优先队列实现。