2018ICPC 焦作 B - Ultraman vs. Aodzilla and Bodzilla(贪心,思维)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018ICPC 焦作 B - Ultraman vs. Aodzilla and Bodzilla(贪心,思维)相关的知识,希望对你有一定的参考价值。

LINK

找到最小的 n n n满足 ∑ i = 1 n i > = h p a + h p b \\sum\\limits_{i=1}^ni>=hp_a+hp_b i=1ni>=hpa+hpb

可以证明,在 n n n轮对决中打死两个怪物一定是最优的(因为可以选择先打死 A A A或先打死 B B B)

定义 p r e i = ∑ j = 1 i j pre_i=\\sum\\limits_{j=1}^i j prei=j=1ij

考虑如果先打死 A A A

找到最小的 p 1 p_1 p1满足 p r e p 1 > = h p a pre_{p_1}>=hp_a prep1>=hpa,前 p 1 p_1 p1次都打 A A A,后面都打 B B B

①.若此时 p r e n − p r e p 1 > = h p b pre_n-pre_{p_1}>=hp_b prenprep1>=hpb,保留此方案.已经满足字典序最小

②.若此时 p r e n − p r e p 1 < h p b pre_n-pre_{p_1}<hp_b prenprep1<hpb,说明之前打 A A A浪费了一些攻击力

需要把某次对 A A A的攻击转移到攻击 B B B去,而且需要满足攻击的尽量晚(字典序最小)

于是我们在第 p r e p 1 − h p a pre_{p_1}-hp_a prep1hpa个回合去打 B B B即可,这样仍然是刚好打完 A A A,且 字典序最小

考虑如果先打死 B B B

找到最小的 p 1 p_1 p1满足 p r e p 1 > = h p b pre_{p_1}>=hp_b prep1>=hpb,前 p 1 p_1 p1次都打 B B B,后面都打 A A A

考虑第 p 1 p_1 p1次攻击溢出了 p r e p 1 − h p b pre_{p_1}-hp_b prep1hpb的伤害,可以将前面若干次攻击替换给 A A A

不妨二分到一个最大的点使得 p r e p 2 < = p r e p 1 − h p b pre_{p_2}<=pre_{p_1}-hp_b prep2<=prep1hpb

这样前 p 2 p_2 p2次攻击都打 A A A,之后一直打 B B B直到打死,再一直打 A A A

①.若 p r e n < h p a + h p b + ( p r e p 1 − h p b − p r e p 2 ) pre_{n}<hp_a+hp_b+(pre_{p_1}-hp_b-pre_{p_2}) pren<hpa+hpb+(prep1hpbprep2)

也就是 p r e n + p r e p 2 > = h p a + p r e p 1 pre_n+pre_{p_2}>=hp_a+pre_{p_1} pren+prep2>=hpa+prep1,可以在剩余时间内打掉 A A A,确定此方案为最终方案

②.否则,还是浪费的太多了,我们至少应该再有 z = h p a + p r e p 1 − p r e n − p r e p 2 z=hp_a+pre_{p_1}-pre_n-pre_{p_2} z=hpa+prep1prenprep2点数值去攻击 A A A

于是我们不在第 p 2 p_2 ACM-ICPC 2018 焦作赛区网络预赛 B题 Mathematical Curse

icpc2018焦作Mathematical Curse(动态规划)

icpc2018焦作Transport Ship(背包思想)

ACM-ICPC 2018 焦作赛区网络预赛 I题(滑稽)

icpc2018-焦作-D-几何模拟

ACM-ICPC 2018 焦作赛区网络预赛 L:Poor God Water(杜教BM)