树上倍增
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
bzoj1977 [BeiJing2010]次小生成树 Tree(kruskal+树上倍增)
先求出最小生成树,注意要严格次小。。。 枚举每一条非树边,把他加进来然后删掉这条非树边连接的两点在树上原来的路径上的最大边(保证是次小),(如果最大边与非树边边权相同则找次大边,为了严格次小)然后更新最小增量。 最大边和次大边可以通过树上倍增求出原创 2017-09-26 20:21:37 · 361 阅读 · 0 评论 -
bzoj5253 [2018多省省队联测]制胡窜(SAM+线段树合并+树上倍增+数学)
这题细节好多阿orz好毒瘤阿orz首先我们对于每一个询问子串,如果处理出了他的所有出现位置,那么我们反过来求,就是要求用两个断点把所有线段都断开的方案数。处理出所有询问子串的出现位置可以SAM+parent树上倍增来快速定位子串所在节点,这个节点的Right集合就是所有的出现位置。我们可以用线段树合并来维护这个Right集合。复杂度O((Q+n)logn)O((Q+n)logn)O((Q+...原创 2018-05-10 19:05:38 · 804 阅读 · 0 评论 -
bzoj2879 [Noi2012]美食节(动态加边费用流)
这题和bzoj1070基本一样,但是数据范围大了很多。按原来的方法做多半会T。我们要进行一些优化。 怎么优化呢?动态加边。也就是说我一开始对于每个厨师i,只建出(i,1)(倒数第一个做的菜。)这一个点,去连边。每次增广过一条路之后,记这次增广经过的点为(x,y),那么我就再建出(x,y+1)这个点和他的边。一直做到最大流为p为止。这样做的正确性也比较显然:只有一个厨师做过倒数第k个菜了,他才有可能原创 2017-12-18 14:54:16 · 423 阅读 · 1 评论 -
bzoj3551 [ONTAK2010]Peaks加强版(kruskal重构树+dfs序+主席树+树上倍增)
题意同bzoj3545,只不过强制在线了。那强制在线了怎么搞呢x,有一个神奇的东西,kruskal重构树,张这个样子:传送门。他有很多优美的性质:首先,他一定是一颗二叉树,然后所有叶子节点一定是原图中的点,从叶子节点往跟走,点权一定是单调不降的。如果原图中有n个点,则这棵树一定有n+n-1个点(因为你需要合并n-1次,也就新建了n-1个点)。然后对于这道题而言,你可以从v开始在树上倍增找到第一个小于原创 2017-12-04 19:31:04 · 447 阅读 · 0 评论 -
loj6012「网络流 24 题」分配问题(费用流)
同loj6011.传送门原创 2017-12-12 10:15:16 · 297 阅读 · 0 评论 -
NOIP模拟11.1
Poetize9 A.communicate (部分分搞了90,仙人掌我哪会啊。。) B.queue 暴力(被我暴力水过了???) C.signal 位运算+瞎搞?(ll加错地方,爆0滚粗(还好有暴力40分)原创 2017-11-01 14:37:08 · 540 阅读 · 0 评论 -
CIA2 城市网络(树上倍增)
题目描述有一个树状的城市网络(即n个城市由n−1条道路连接的连通图),首都为1号城市,每个城市售卖价值为a[i]的珠宝。你是一个珠宝商,现在安排有q次行程,每次行程为从u号城市前往v号城市(走最短路径),保证v在u前往首都的最短路径上。在每次行程开始时,你手上有价值为c的珠宝(每次行程可能不同),并且每经过一个城市时(包括u和v),假如那个城市中售卖的珠宝比你现在手上的每一种珠宝都要优秀(价值更高,原创 2017-10-11 22:16:38 · 680 阅读 · 0 评论 -
NOIP模拟9.20
2012提高D1 A.Vigenère 密码(模拟)AC B.国王游戏(贪心+高精)没写高精60. C.开车旅行(模拟+倍增+set)暴力了70. C预处理要用到set,有些麻烦。倍增时把两人各走一步看做一整步,最后要特判A还能走一步,而B不能的情况。原创 2017-09-20 15:58:58 · 283 阅读 · 0 评论 -
NOIP模拟9.21
2012提高D2 A.同余方程。扩展欧几里得算法求逆元。写了个暴力60分。 B.借教室。线段树写错,25分。线段树本来可以拿到90分。。正解是二分答案+前缀和 C.爆0.写的暴力一堆错。。可能不在状态吧。本来暴力可以拿到30左右。。正解是二分答案+贪心+倍增。真心不好想,不好写。原创 2017-09-23 16:21:04 · 248 阅读 · 0 评论 -
NOIP模拟9.27
2013提高D1 A.转圈游戏(快速幂)AC B.火柴人排队(树状数组求逆序对)AC C.货车运输(贪心+并查集+树上倍增)AC原创 2017-09-27 11:31:51 · 351 阅读 · 0 评论 -
bzoj3676 [Apio2014]回文串(manacher+SAM)
首先对原串建SAM,并处理出每个点所代表的串出现的次数sz。 用manacher搞出本质不同的回文子串,去SAM上查询出现次数即可。 在SAM上定位这个串的时候倍增查找即可。 复杂度O(nlogn)O(nlogn)O(nlogn) 注意我这样manacher没有处理单点的情况…#include <bits/stdc++.h>using namespace std;#de...原创 2018-06-22 15:39:56 · 284 阅读 · 0 评论