16暑期补HackRank计划

来源:互联网 发布:mts钢结构设计软件 编辑:程序博客网 时间:2024/05/22 05:37

已完成1题



1.(有趣)fighting-pits(Difficult80):https://www.hackerrank.com/contests/101hack39/challenges/fighting-pits

题意:有k个队博弈,每个队有一些各自有权值的人,两个队交锋,轮流攻击对方,某队派出一个带有val的某人,将消灭掉对面任意val个人。

现在有1e5个操作

1 x p :表示在p队添加一个攻击力x的人。保证了每次添加的x不小于这个队原有队员的最大攻击力。

2 x y :询问x 和 y队博弈,x先手,哪个队获胜。

思路:O(n ^ 1.5):这个题比较有意思,赛时想出一个玄学的解法,没想到就是标解。显然x和y博弈,要攻击的那一方必定派出最大攻击力val的某个人消灭掉val大个对方的人。

所以每次询问x和y,暴力当然是O(n)的,现在需要把每个队中相同攻击力的人合并,统计出个数cnti,这样每次用两个队最大攻击力的人们互相PK,可以O(1)判出彼此消灭了多少人,存活了多少人。这样的确优化了一点,其实复杂度已经优化到sqrt(n)了,可以证明出最多只需要比较sqrt(n)次就能判出哪个队最后获胜。



0 0
原创粉丝点击