题目链接:https://www.luogu.org/problemnew/show/P2827
35分:暴力sortO(mnlogn)。
80分:考虑到每次不好维护不被切的点+q,正难则反。改成维护被切的点-q,再维护一个q*m,跑大根堆O(mlogn)。
100分:考虑到先切的点一定比后切的点分出来的大。
若切两个点a,b。a > b,a切成a1 > a2,T秒后,切b,b1 > b2
此时a1 = Tq + pa,a2 = Tq + (1-p)a,
b1 = pTq + pb,b2 = (1-p)Tq + (1-p)b
∵0< p < 1,a > b 得证
所以本来序列带有单调性,我们只需要维护三个队列每次取max就行了。
写完注意常数。
所以我还是去写80分的吧。