摘要:
题目:一棵树,每条边有权.求一条路径,权值和等于K,且边的数量最小. 点分治,我们考虑经过根节点的路径,t[x]表示路径长为x时最少的边数,然后每次拿栈记下来清空。 注意先搜索再更新,这样可以避免同一子树内互相到达。 By:大奕哥 阅读全文
摘要:
删边变为反向加边,一开始开了数组记录了边的编号,结果往下一翻才发现数据是加强版只得log的求编号了。 两点间最大路径最小值一定在最小生成树上。 先从小到大加边,然后就是裸的LCT了。 By:大奕哥 阅读全文
摘要:
树上莫队和普通的序列莫队很像,我们把树进行dfs,然后存一个长度为2n的括号序列,就是一个点进去当作左括号,出来当作右括号,然后如果访问从u到v路径,我们可以转化成括号序列的区间,记录x进去的时候编号为f[x],出来时为g[x],然后分类讨论一下(f[u]<f[v]),如果u和v的lca不是u,那么 阅读全文
摘要:
对LCT子树大小进行维护。 size表示实子树大小,sz表示虚子树大小。 具体操作是体现在link和splay中,可以看代码。 注意每次做完都要update。 By:大奕哥 阅读全文
摘要:
树剖模板,注意把边化为点后要查到y的儿子。 阅读全文
摘要:
ZHX的题目。 类似于HH的项链我们考虑最后加入哪一条边以后合并了两个联通块,所以我们边权从大到小排然后依次加入。找出最晚加入的,记成last。 然后做主席树就好啦! 注意拆边为点。 By:大奕哥 阅读全文
摘要:
按a从小到大排序,然后按b建图。 每次只需要找1~n中最大的b加当前的a计算答案即可。 这里还有一个小操作就是化边为点,把一条边的边权看做一个点的点权然后多连两条边。 By:大奕哥 阅读全文
摘要:
这题可以用分块暴力做,这里给出正解LCT的代码。 对于每一个弹射器i+k相当于i的父亲,大于n的全部归到n+1上。 这样对于修改操作就像于换了个父亲,我们要记录下上一次的父亲因为在splay中父亲可能会改变。 对于查询操作就相当于把n+1mroot到根,因为你添加时会更新,不能确保n+1的位置。 而 阅读全文
摘要:
NOIP之前写过这题,先用的分块。 又采用了树状数组,离线按右端点排序,只关心最后一个出现的位置,如果有更新的则将原来的-1将新的位置+1 现在我又学了主席树,我们只要对于last(上一次的位置)建主席树,然后查询0~l-1这个区间出现的个数即可。 阅读全文
摘要:
矩阵优化DP。 然而本题用到了骚操作,就是没有办法沿原路走回去,所以我们不能按临接矩阵dp,需要按照边建图 两边联通当且仅当a.from==b.to所以转移dp[i][j]=dp[i][k]*dp[k][j] 多少次就是多少次幂,然后加上与终点联通边的就是答案了。 By:大奕哥 阅读全文
摘要:
Link-Cut Tree 把每个重链看成是一个splay mroot:将x整到splay根上,将这个splay上下左右翻转 这个根的左儿子是他上面的重链,右儿子是他下面的重链 access:将根(最最上面)到x的边看成一条重链 link:连接两点都到根上,再更新 cut:切除两点关系,先将x转到根 阅读全文
摘要:
题目大意是这样的,给出n个点和m条边,每个边有一个流量的上下界,问是否存在一个循环的流量。这就是典型的无汇源点的上下界网络流,也就是循环流。做法是这样的,首先每条边我们都添加最少的流量,由于要满足流量守恒的条件,即每个点的流出量等于流入量,那么我们尝试进行修改,添加新的流量。我们记录一下每个点流出量 阅读全文
摘要:
题目大意,给出两个字符串集合S和T,向T中添加字符串,查询S_i在T中有几个字符串出现过。一看这种多字符串匹配问题,我们联想到了AC自动机,做法就是,对于S集合我们建立一个AC自动机,建出fail树,fail树有一个很好的性质就是,对于一个节点x,它所对应的字符串是它子树中所有节点对应的字符串的后缀 阅读全文
摘要:
绝世好题。 正当我犹豫不决时,hzwer说:“MAP!!!” 没错这题大大的暴力,生猛的stl,贼基尔爽,,ԾㅂԾ,, 由于我们求点名在名字中的子串个数,所以将点名建AC自动机,记录节点属于哪次点名,每次带着这位同学的所有名字去里面扫,注意判重 复杂度20000*100000以及玄学的stl复杂度。 阅读全文
摘要:
学习了FFT用来求多项式的乘法,看了算导上的介绍,上面讲的非常明白,概括一下FFT的原理就是,我们在计算多项式的乘法时,如果暴力模拟的话是n^2 复杂度的,就像小学学的竖式乘法一样,比如一个n位数乘上一个n位数,我们需要用竖式乘法计算要列n行,每一行有n个元素,然后相邻两行错开一位(很显然,竖式乘法 阅读全文
摘要:
询问x这个串在y中出现的次数。 fail数组有一个性质就是一旦a的fail指向b那么b所代表的字串一定是a的后缀。 所以我们看fail树(即按fail反向建树)中x的子树有多少y的结点即可。 这个操作可以使用树状数组维护dfs序操作。 By:大奕哥 阅读全文
摘要:
找到了一个不错的题,题目中说要让路径异或和最大,考虑由于路径非常复杂,所以不太可能按照某一路径进行dp,一般对于异或和的操作我们进行线性基,最后答案的路径一定是一条从1到n的路径加上几个环构成,我们dfs找出环来,记录每一个环的异或和,我们可以随意选取一条从1到n的路径当作初始答案去进行线性基,因为 阅读全文
摘要:
我们不能让重复过的字串出现在无限串上(就叫这个了。。。) 也就是要自动机一直能匹配但就是匹配不到,那么就是在自动机上找一个环。 dfs判环即可。注意是个有向图。 阅读全文
摘要:
直接统计答案,要是统计相同个数呢?不清零即可。 阅读全文
摘要:
一开始以为是个线段覆盖,后来仔细一读才发现有固定的结束时间。 类似于线段覆盖按右端点排序,使劲往里加然后加不了就用现在的换,使得所用时间尽量短。 PS:VANE最近回家养老了,只有大奕哥来撑场子了。 阅读全文