比较有意思的题:
无。
偶然拿到了小学组的T5;
有一个龙和(n)个勇士,龙有战斗力(A)和血量(B),勇士也有战斗力(a_i)和血量(b_i),同时第(i)个出场战斗的勇士的战斗值会乘上(i),同时这个勇士必须血量被杀完了才能下来,求至少要几个勇士才能把龙整死,如果不行输出( ext{fail})。
瞄了一眼,感觉不会/jk
然后群里给了几个( ext{solution})
- 在场选手:直接给(a_i)排序然后从大到小打。
显然是假的,不说了。 - 某个神仙:直接按照(a_i imes b_i)排序然后从大到小打。
反例:
首先整一个引理:
所有勇士的攻击总和的打法一定是按照(a_i imes b_i)排序后,然后按从小到大打。
这个证明很easy,就不证了。
如果这个值正好等于(B),那么如果按照上面从大到小打显然值就不会到(B),输出fail,就假了。
- 我的做法:二分个数,然后(mathcal{O}(n))check。
对于( ext{check})函数:
按照上面最大和的打法判断是否(ge B),没了。
我估计还有更优的solution,麻烦在下方评论/se