hihoCoder挑战赛1 毁灭者问题

Posted mcflurry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hihoCoder挑战赛1 毁灭者问题相关的知识,希望对你有一定的参考价值。

题目链接:http://hihocoder.com/problemset/problem/1034

数据结构题,由于每个魔法单位有着不同的回复速度和上限,所以不能根据吸收时间点进行查询和更新。但是如果知道每个人在哪些时间点被吸收了,那么可以按照每个单位的情况更新,具体操作是:时间间隔超过Mi/Ri的则被吸收的值为Mi(设这样的间隔有x个),否则为Ri*时间间隔(设这样的间隔总时间长度为y),此魔法单位被吸收的总量为x*Mi+y*Ri。

如何快速求每个单位在哪些时间被吸收:维护一个有序序列记录时间点,假设当前单位为i,在某个时间t1有一个以i-1为结束的吸收区间,那么在有序序列中删除t1,在某个时间t2有一个以i为开始的吸收区间,那么在有序序列中插入t2。做完以上的处理,有序序列中记录的时间点即为所求。这个序列用set就能维护。

如何快速求上面提到的间隔数x和间隔总时长y:维护一个线段树,线段树的每个节点代表一个时间间隔,间隔按升序排列,线段树维护两个区间和,一个是个数和一个是时长和。时间点序列中的插入操作相当于加入了两个

以上是关于hihoCoder挑战赛1 毁灭者问题的主要内容,如果未能解决你的问题,请参考以下文章

hihoCoder挑战赛28 题目1 : 异或排序

hihoCoder挑战赛28题目3 : 树的方差

hihoCoder挑战赛28题目2 : 二进制翻转

网易官方极客战记(codecombat)攻略-森林-野餐毁灭者

读《三体Ⅲ · 死神永生》| 只有仁慈没有能力,也不过是个毁灭者

成就表