题目大意: 给你n个不同长度蚯蚓,每秒从里面取出最长的砍下u/v变成两只,又把剩下的加长q. 问你在m之前的t,2t,3t...的时间上,砍的蚯蚓长度, 以及m秒后剩下所有的蚯蚓长度. 思路: 很容易想到用一个堆来解决,然而这样时间复杂度是O((m+n)log(m+n))的,过不去. 所以复杂度得是线性的. 考虑把原来的堆改成三个单调队列. 每个蚯蚓切成两半总会有一个长的.一个短的. 我们有q1维护原来的蚯蚓,q2维护砍下来长的一截蚯蚓,q3维护砍下来短的一截蚯蚓. 不考虑蚯蚓的生长,我们只需要