04 2023 档案
摘要:基环树求直径,求树的直径只需要一个dfs
阅读全文
摘要:倍增维护树上max,比树剖快,少一个log
阅读全文
摘要:/* 1.删边法:把边删去后,查找最小值 2.floyd: 首先是肯定枚举到了所有的组合 无向图最小环,先确定两个点之间的最短路,并且一定没有经过第三个点,然后在以经过第三个点 */ #include <bits/stdc++.h> using namespace std; const int N=
阅读全文
摘要:P3008 [USACO11JAN]Roads and Planes G ##思路 按照分连通块的方法进行计算,并且如果不是本连通块的点,不能在现在的本次dfs中求解最小值。要一个一个的联通快进行标记。 /* 不能直接走disj的话,缩点的思想很重要 首先尽量不要使用spfa进行走图,可能会卡 对道
阅读全文
摘要:对待匹配的串进行建树,对模板串进行走图。其实本来就应该是这样的。
阅读全文
摘要:对于判断是否为循环节,可以结合kmp的循环节进行理解
阅读全文
摘要:动物园 /* cnt代表匹配到的位置在这里的时候,已经包含匹配好的数量 直接将第一个的值赋值为1就可以了 这里是采取匹配两次的方法,第一次求ne数组并初始化cnt 第二次是确保匹配的长度不会过大,也就是只有前面i/2个元素进行匹配,时间复杂度是o(n) 两次匹配,从而确保范围 */ #include
阅读全文
摘要:非常绕的一个二维前缀和,最后公式还是看到别人的
阅读全文
摘要:模板题 /* 拓展KMP和z函数 一般z函数用来匹配自己 拓展KMP用来和别人进行匹配 用匹配串进行一次KMP匹配 然后与模式串进行匹配 */ #include <bits/stdc++.h> using namespace std; const int M=2e7+5; using ll=long
阅读全文
摘要:模板题 /* 循环结构的最小字典序问题 最小表示发模板题 利用前面已经比较过的信息,从而pass掉某些答案,实现o1的查找 如果全部相同,那么一次查找就可以了 反之会进行跳转,跳到那个较小的地方 */ #include <bits/stdc++.h> using namespace std; con
阅读全文