2016弱校联盟十一专场10.3
传送门
B. Help the Princess!
C. We don't wanna work!
两个优先队列维护工作中积极性最小的,空闲中积极性最高的。 两个队列倒来倒去就可以了。
D. Parentheses
考虑最坏情况)))...(((。 假设有\(x\) 个右括号,那么这种情况需要\(\frac{x(x+1)}{2}\) 次操作。 将第一个左括号移动每往左移动一个位置,则需要的操作次数减一,直到移动到最左边则变成\(x-1\) 的子问题。 那么只要找到第一个\(x\) 使得方案数大于等于\(n\) 即可,根据差值移动第一个左括号。
E. Similarity of Subtrees
F. Escape from the Hell
除了最后一瓶饮料外,其余时候必然是喝\(A_i-B_i\) 大的饮料喝。 首先按照\(A_i-B_i\) 从大到小排序,假设喝到第\(i\) 瓶,当前爬的高度为\(H\) ,罪犯的高度为\(C\) ,显然\(H \gt C\) ,否则直接结束了。 在当前情况下,可以喝\(i+1\cdots n\) 中\(A_j\) 最大的尝试一步跳上去,否则需要调整\(1\cdots i\) 中\(A_j\) 较大的一瓶放到当前喝,但是需要保证总体下降高度不会被罪犯抓到。 假设我们把\(j\) 移动到最后,那么需要满足\[d_1+\cdots + d_{j-1} + d_{j + 1} +\cdots + d_k - c_1-c_2-\cdots - c_{k-1} \gt 0\] \(any\ k\in[j+1,i],d_i=A_i-B_i\) 整理下式子可得\[d_1+\cdots + d_k - c_1-\cdots - c_{k-1} \gt d_j\] 可以发现左边式子与\(j\) 没有关系,所以对于任意的\(j\) 来说,如果均满足式子说明位置\(j\) 是可以往后移动的。 假设我们已经得到了在\(i-1\) 的可移动位置,对于左边的式子新增了\[d_1+\cdots + d_i - c_1-\cdots - c_{i-1}\] 也就是说我们只要把之前的可移动位置的\(d\) 值与当前值比较即可,比较的顺序的肯定是从小到大,所以需要一个优先队列,然后用个线段树维护下最大\(A\) 值(当然可以不用线段树,只是线段树的时间复杂度也够就随意写了)。
G. Share the Ruins Preservation
显然凸包会发生的变化的时候是在划分线在两个\(x\) 坐标之间。 那么我们将划分线按照顺序扫过去,然后维护凸包。 但是,如果同时维护两个凸包显然很难,而维护一个凸包,就简单得多。 正向扫一遍,维护一个凸包的面积,反向再扫一遍,维护另一个凸包的面积,最后枚举下划分线的位置然后计算面积和即可。 维护凸包的做法,维护上凸壳和下凸壳及其面积。
转载于:https://www.cnblogs.com/mcginn/p/5948541.html