堆
L_0_Forever_LF
一个热爱OI的OIer
展开
-
BZOJ2006: [NOI2010]超级钢琴
求和为前k大的长为L~R的区间的和将区间和转前缀和∑Ri=Lai=s[R]−s[L−1]\sum_{i=L}^Ra_i=s[R]-s[L-1] 右端点相同的区间放一起,以他们的区间和的最大值为代表值,把这些右端点放进一个堆里,取k次,每次取区间和最大的右端点出来,将它的左端点区间以最小的s[L-1]的L为界,分成两部分,求出这两部分s[L-1]的最小值,算出最大的区间放进堆里原创 2017-04-23 19:32:29 · 447 阅读 · 0 评论 -
BZOJ1095: [ZJOI2007]Hide 捉迷藏
所以为什么这道是动态点分治的模板题….细节好爆炸动态点分治按每次分治的重心建树,然后在分治的过程中处理出每个点在原树中到它新树中log个父亲的距离,它在新树中的层数 然后维护(好多个)堆,分别是(新树中)每个点的子树内所有点到它父亲的距离heap[x],(新树中)每个点各个子树到它的最长链heap2[x](注意自己到自己的一条长度为0的链以处理子树延伸上来的单链),还有一个全局的堆维护每个重心处的原创 2017-03-30 09:22:37 · 1077 阅读 · 0 评论 -
BZOJ3728: PA2014Final Zarowki
贪贪贪将一开始的灯泡和房间从小到大排个序 房间倒着处理,每个房间找>=他的功率的还未匹配的最小的灯泡,将他们匹配上 找不到匹配的灯泡一定要花费一次替换,打个标记在上面,先不管他 匹配完房间如果已经不够替换就gg 否则将每个房间匹配的灯泡-他的要求塞进一个大根堆 去掉堆顶的剩余替换次数个code:#include<set> #include<map> #include<deque> #inc原创 2017-11-17 19:54:23 · 386 阅读 · 0 评论 -
BZOJ3832: [Poi2014]Rally
喵喵喵新建点st连向所有点,所有点连向点ed,f[i]表示S到i的最长链,g[i]表示i到T的最长链,那么过一条边< u,v>的最长链就是f[u]+< u,v>+g[v],将这个定义为边权,那么原图任意一个割集中最大的边权就是图中的最长链 按拓扑序枚举删的点,一开始原图分成st和其他点两个集合S,T,每次选出T中一个可拓展的点v,将割集中连向v的边删掉,剩余的最大边权就是删去v的答案,再将v加入S原创 2017-11-29 11:08:38 · 323 阅读 · 0 评论