摘要:一.图论 1.最短路(dij+zkw线段树) 2.点双连通分量(圆方树) 3.强连通分量 4.2-SAT 5.dinic 6.01bfs 二.树 1.长链剖分(求x的d级祖先) 2.O(nlogn) - O(1) 求lca 3.dfs手写栈 举例:以下是链剖的第一个dfs的递归版转非递归版 4.ds 阅读全文
posted @ 2018-07-17 20:10 lher 阅读 (106) 评论 (0) 编辑
摘要:Boruvka算法解决某些问题超级好用。 这些问题形如,给你n个点,每个点有点权,任意两个点之间有边权,边权为两个点权用过某种计算方式得出。 求最小生成树。 通常用O(log n)的时间可以找到与点i连边的边权最小的j。 我们考虑这样一个求最小生成树的算法: 考虑维护当前的连通块(初始每个点为独立的 阅读全文
posted @ 2019-02-17 23:15 lher 阅读 (254) 评论 (0) 编辑
摘要:转眼间,我也成了高一学生,初二提高一等,初三提高甚至CE了一题,连一等都没拿到。 DAY1 8:30进考场。 开考看T1,各种YY做法,但好像一个比一个复杂,于是就去看T2。 看到T2,怎么又是不能被表示出来的数,我顿时想起了去年的NOIP,那题我写个exgcd,还好,还是拿到了100分。 T2看完 阅读全文
posted @ 2018-11-11 13:49 lher 阅读 (134) 评论 (0) 编辑
摘要:一.图论 1.最短路(dij+zkw线段树) 2.点双连通分量(圆方树) 3.强连通分量 4.2-SAT 5.dinic 6.01bfs 二.树 1.长链剖分(求x的d级祖先) 2.O(nlogn) - O(1) 求lca 3.dfs手写栈 举例:以下是链剖的第一个dfs的递归版转非递归版 4.ds 阅读全文
posted @ 2018-07-17 20:10 lher 阅读 (106) 评论 (0) 编辑
摘要:P(S)是获得S中的元素的概率 E(S)是获得S中的元素的期望步数 E(S)=1/P(S) min-max容斥 记min(S)为出现S中任意一个元素 max(S)为出现S中全部元素 P(min(S))=∑i∈S P(i) E(min(S))=1/P(min(S)) 则E(min(S))为出现S中任意 阅读全文
posted @ 2018-07-08 20:44 lher 阅读 (78) 评论 (0) 编辑
摘要:一.扩展欧几里德(exgcd) 扩展欧几里德的基本形式是a*x+b*y=gcd(x,y) 设 a>b。 1,显然当 b=0,gcd(a,b)=a。此时 x=1,y=0; 2,ab!=0 时 设 ax1+by1=gcd(a,b); bx2+(a mod b)y2=gcd(b,a mod b); 根据欧 阅读全文
posted @ 2017-12-28 13:20 lher 阅读 (108) 评论 (3) 编辑
摘要:首先,我们复习一下矩阵乘法。 我们记3个矩阵A(a行b列),B(b行c列),C(a行c列)。我们要计算A*B,并把答案存到矩阵C中。 C[i][j]+=A[i][k]*B[k][j](1<=i<=a,1<=j<=c,1<=k<=b),即新矩阵的第i行第j个元素是原1矩阵的第i行*原2矩阵的第j列得来 阅读全文
posted @ 2017-12-11 20:44 lher 阅读 (295) 评论 (0) 编辑
摘要:纹波星(stripe) 【题目描述】 Kirby最近要去Ripple Star拜访Ribbon。但是他觉得空手去不太好,所以他决定带一点小礼物。 Kirby有n种颜色的缎带,每种颜色的缎带有ai条,Kirby希望用上所有的缎带来接成一长条来送给Ribbon。为了美观,长条中相邻的两段的颜色不能相同。 阅读全文
posted @ 2017-12-09 15:13 lher 阅读 (45) 评论 (0) 编辑
摘要:我们可以发现,所有数要么被删,要么+1(-1,0)是某个质数的倍数。 由于整段序列不能全部被删,所以第一个数或者最后一个数一定会被保留。 这里有6种情况c1-1,c1,c1+1,cn-1,cn,cn+1。 考虑对于每一种情况分别处理。设这个数为x 那么其中的每个数都必须被删或者是x的质因数的倍数。 阅读全文
posted @ 2017-12-07 21:55 lher 阅读 (59) 评论 (0) 编辑
摘要:我们把ai向i连边。样例连出来的图是这样的: 然后,我们可以发现,对于每个节点,它需要和它所有的子节点都比赛一场,然后输给它的父亲节点。 用f[i]表示以i为子树的所有节点全部比赛完需要的最少时间。 如何更新f[i]?第i号节点要和它所有的子节点比赛一场,显然,它应该先和它的子节点所用时间最短的,所 阅读全文
posted @ 2017-12-01 23:01 lher 阅读 (51) 评论 (0) 编辑
摘要:CDQ分治是干什么用的:顶一层数据结构。 基本思想:我们要解决一系列问题,这问题一般包含修改和查询操作,可以把这些问题按发生时间排成一个序列,用一个区间[L,R]表示。 1.分:对于一个[l,r]区间,我们把它分成[l,mid],[mid+1,r]两区间处理 2.合:对于一个[l,r]区间,统计[l 阅读全文
posted @ 2017-11-27 21:36 lher 阅读 (93) 评论 (0) 编辑