随笔分类 -  图论===============

摘要:![](https://img2020.cnblogs.com/blog/1545866/202104/1545866-20210412225843590-693803445.png) 阅读全文
posted @ 2021-04-12 22:59 Creed-qwq 阅读(44) 评论(0) 推荐(0) 编辑
摘要:1 阅读全文
posted @ 2020-10-27 22:35 Creed-qwq 阅读(67) 评论(0) 推荐(0) 编辑
摘要:链接:http://zhengruioi.com/problem/265 第一种操作使得你可以任意访问该字符串的全排列 因此可以得到n!a!b!c!d!种方案 然后把每一组(a,b,c,d)看成一个节点的话 第二种操作就是在这些节点中连边 最终答案就是一个最长路 tarj 阅读全文
posted @ 2020-09-25 05:15 Creed-qwq 阅读(113) 评论(0) 推荐(0) 编辑
摘要:就我感觉这道题很神仙吗/kel 仔细想想应该也是一种适用范围挺广的做法。 考虑我们可以通过dijkstra在O(nlogn)求出一个点集到另外一个点集的最短路。 那么我们可以通过一些划分点集的方式使得每一对点都被计算一次。 考虑按照二进制划分。 两个不同的数至少有一个二进制位不同。 按照每一个二进制 阅读全文
posted @ 2019-04-25 22:26 Creed-qwq 阅读(207) 评论(0) 推荐(0) 编辑
摘要:https://loj.ac/problem/6062 直接套用霍尔定理。 由于A有多个选择,考虑维护B是否合法。 首先B数组的顺序显然是没有用的,可以直接排序。 然后每个A就都变成了向一个后缀连边。 对于B,原本需要check每一个集合是否满足|u|=0 因此,只需要维护F【i】 的最小值即可。 阅读全文
posted @ 2019-04-08 21:07 Creed-qwq 阅读(276) 评论(6) 推荐(0) 编辑
摘要:先是几个比较简单的定理 最大匹配=最小点覆盖=n 最小边覆盖=n 最大独立集 最小点覆盖和最大独立集互补 霍尔定理 对于任意集合a,都满足|a| 阅读全文
posted @ 2019-04-08 20:58 Creed-qwq 阅读(150) 评论(0) 推荐(0) 编辑
摘要:看了某神仙博客学了一手,基本的思路就是容斥入度为0的点。 n^2做法。 F(n)=sigema i (-1)(i-1)✖ C(n,i)✖ F(i)✖ 2(j*(i-j)) nlogn做法 对上述式子进行优化 (引用了yyb大佬博客的图片,非常感谢,侵删) (留下了不会用Latex的眼泪) 上述式子x 阅读全文
posted @ 2019-03-29 05:49 Creed-qwq 阅读(189) 评论(0) 推荐(0) 编辑
摘要:每个串拆成两个,都插入trie数。 把trie树建出来后,每一条从根到叶子的链上最多只能有一个变量为1。 这是个经典的前后缀优化2 sat建图的套路。 树上的做法也就是边dfs边做而已。 cpp include define N 3300000 define eps 1e 7 define inf 阅读全文
posted @ 2019-02-28 09:56 Creed-qwq 阅读(276) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-02-25 20:19 Creed-qwq 阅读(5) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-02-12 00:14 Creed-qwq 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题意: sol: 考虑floyed 直接暴力做的话复杂度是k×n^3会炸。 考虑一个比较神仙的分块做法。 注意到我们是可以直接求单独某个k的矩阵,使用矩阵快速幂即可(取min的矩阵乘法)。 单独求一次的复杂度是O(n^3logk)。 设块的长度为100。 对k/100的分块边界求一下它们的矩阵。 这 阅读全文
posted @ 2019-02-01 01:46 Creed-qwq 阅读(158) 评论(0) 推荐(0) 编辑
摘要:算法流程 x0 > y1 表示x为false时y必须为true 最后输出的时候谁的bel小选谁 前后缀建图 例:要求n个变量满足至多有1个为true。 暴力:一个点的true向其它n-1个点的false连边,复杂度O(n^2)。 正解:prei表示前i个点是否有真。 prei的true向prei+1 阅读全文
posted @ 2019-01-27 20:51 Creed-qwq 阅读(154) 评论(0) 推荐(0) 编辑
摘要:题意:求树上第k大联通块 n,kt'的路径。 合并的时候新建关于当前分治重心的S点和T点。 S s1 t1 s2 t2 s3 t3 T。 其中S s1边权为wx,ti si+1的边权为0,再连一条S T边权为0代表这个点不选的方案即可。 这样一波神仙操作后S T就可以代表一条选择了这个点(这里选择的 阅读全文
posted @ 2019-01-27 19:06 Creed-qwq 阅读(410) 评论(0) 推荐(0) 编辑
摘要:首先考虑怎么check一个点是否能被最后一个删除。 可以这么建图,以这个点建有根树,边全部向上指,再加上剩下的有向边。 很明显,这里的一条边的定义就变成了只有删去这个点,才可以删去它指向的点。 因此,只需要建n次图暴力判断是否有环即可。 这样做是n^2的。 考虑加入一条边后,会产生什么影响。 发现这 阅读全文
posted @ 2019-01-27 13:34 Creed-qwq 阅读(305) 评论(0) 推荐(0) 编辑
摘要:首先,有一个很暴力的nk的做法,就是对每种颜色分别开棵lct来维护。 实际上,有复杂度与k无关的做法。 感觉和bzoj4025二分图那个题的区别就在于这个题是边dfs线段树边拆分区间。 阅读全文
posted @ 2019-01-20 13:15 Creed-qwq 阅读(370) 评论(0) 推荐(0) 编辑
摘要:首先我们发现,本题具有可二分性。若花费x可以完成,x+1也一定可以完成。 那么判断是否可行,可以把二分得到的mid作为下限,仅连接边权大于等于mid的边,如果这样的图有环,那么向上二分,否则向下。 这样的正确性显然,因为如果图是一个DAG,那么剩下的边始终从拓扑序小的向大的连,这样就不会出现环。 输 阅读全文
posted @ 2019-01-20 00:09 Creed-qwq 阅读(168) 评论(0) 推荐(0) 编辑
摘要:算法正确性证明: 1.最优性:最小边一定包含在生成树中。 2.合法性:一定不会构成环。如果存在环说明一个点的最小连边有两个,显然矛盾。 算法时间复杂度证明: 每执行一次算法,所有联通块的大小都至少为2,因此总联通块个数一定至少/2,因此最多只会执行log次。 算法实现: 1.为了避免边权相同的情况, 阅读全文
posted @ 2019-01-18 00:14 Creed-qwq 阅读(1249) 评论(0) 推荐(1) 编辑
摘要:链接:http://uoj.ac/problem/176 对于这种边权难以直接维护的都直接考虑brouvka算法。 显然,我们要做的是实现一个可以查询&x最大的数据结构。 可以先对于所有权值建立一颗01 trie树。 考虑在trie树查询答案的过程,可以考虑一个从高位到低位的贪心。 当x的第i位为1 阅读全文
posted @ 2019-01-18 00:05 Creed-qwq 阅读(412) 评论(0) 推荐(0) 编辑
摘要:圆方树 对一个无向图求一下点双,重新构图 对于每一个点双,新增加一个点(称为方点), 这个点向该点双中每一个点(称为圆点)连边, 这样会构成一颗树,被称为圆方树。 基本性质: 1.圆方树上任何一条边都是一端是圆点,一端是方点。 2.S T的圆方树上路径可以代表原图上S T的路径,这里的代替具体来说是 阅读全文
posted @ 2018-12-14 00:53 Creed-qwq 阅读(165) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示