摘要: 【算法】后缀数组 【题解】把数组复制一遍然后SA处理即可。 后缀数组 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=300010; int sa[maxn],bas 阅读全文
posted @ 2017-04-02 18:00 ONION_CYC 阅读(182) 评论(0) 推荐(0) 编辑
摘要: #include<cstdio> #include<algorithm> #include<cstring> #include<cctype> #include<queue> #include<vector> using namespace std; const int maxn=100010; s 阅读全文
posted @ 2017-04-01 21:48 ONION_CYC 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 【算法】KMP 【题解】题目要求的是数量而非长度……QAQ BZOJ 3670 NOI2014 动物园 KMP算法 KMP树结点是0~n,根节点是0,树边就是失配边,跑失配边其实就是跑向父亲(所以它是后面所有后缀与它一样的字符串的祖先)。 题目要求的是满足要求(长度<一半)的前后缀相等的数量,若不考 阅读全文
posted @ 2017-03-27 14:02 ONION_CYC 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 【算法】AC自动机 【题解】本题注意题意是多少关键字能匹配而不是能匹配多少次,以及可能有重复单词。 询问时AC自动机与KMP最大的区别是因为建立了trie,所以对于目标串T与自动机串是否匹配只需要直接访问对应结点,而不用真的比较。 因此可以预处理出拥有对应节点的失配串,不用一次一次跑前跑去找一样的。 阅读全文
posted @ 2017-03-26 16:58 ONION_CYC 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 【算法】KMP 【题解】KMP中n-next[n]得到最小循环节的性质。 考虑一个循环串(最后一个循环节可能残缺),它最长的【后缀=前缀】一定是以第二个循环节为起始位置的后缀。 正着考虑的话假设后缀T以x+1开始,S为前缀那: 1.S(1~x)=T(1~x)即S(x+1~2x) 2.S(x+1~2x 阅读全文
posted @ 2017-03-26 12:46 ONION_CYC 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 【算法】KMP 【题解】【算法】字符串 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1000010,maxm=1010; char A[maxn],B[maxm] 阅读全文
posted @ 2017-03-25 22:58 ONION_CYC 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 把字符串原样复制一遍放在后面是惯用套路,此时字符串数组开两倍! ★字符串算法的核心是构造失配指针! 【字符串哈希】 双蛤习取模保险,毕竟连自然溢出都是能卡的…… 例题:【CodeForces】961 F. k-substrings 字符串哈希+二分 用于O(1)判断两个字符串是否相等:对于s[i~j 阅读全文
posted @ 2017-03-25 22:47 ONION_CYC 阅读(514) 评论(0) 推荐(1) 编辑
摘要: 【网络流与二分图】专题链接 【图论】 图论-刘汝佳 完全三部图:图G可被分为三个顶点集,点集内的点相互均没有连边,不同点集的点之间相互均有连边。完全三部图的三元环个数是三点集点数的乘积。 无向无环图就是树。有向无环图DAG方便操作。 有环图可以tarjan缩点。 哈密顿回路(路径):每个点只经过一次 阅读全文
posted @ 2017-03-25 18:13 ONION_CYC 阅读(1139) 评论(0) 推荐(1) 编辑
摘要: 【平衡树】★平衡树 by onion_cyc 【莫队算法】 问题:给定长度为n的序列和m个区间询问,支持快速增减相邻元素维护区间信息。 将询问按左端点分块,块大小为$Q=\frac{n}{\sqrt m}$,块内按右端点排序。 然后依次回答询问,需要O(1)从(l,r)转移到(l,r+1),(l,r 阅读全文
posted @ 2017-03-25 17:10 ONION_CYC 阅读(828) 评论(0) 推荐(0) 编辑
摘要: 【算法】高斯消元 【题解】 高斯消元经典题型:异或方程组 poj 1222 高斯消元详解 异或相当于相加后mod2 异或方程组就是把加减消元全部改为异或。 异或性质:00 11为假,01 10为真。与1异或取反,与0异或不变。 建图:对于图上每个点x列一条异或方程,未知数为n个灯按不按,系数为灯i按 阅读全文
posted @ 2017-03-24 19:58 ONION_CYC 阅读(283) 评论(0) 推荐(2) 编辑
该文被密码保护。 阅读全文
posted @ 2017-03-24 19:05 ONION_CYC 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 【算法】高斯消元 【题解】 建矩阵; for i 找到同列绝对值最大数字; 交换; for k(行) j(列)(倒序) 除法; for i(倒序) for j 减去已知元素 除到右边; #include<cstdio> #include<algorithm> #include<cmath> #inc 阅读全文
posted @ 2017-03-24 13:33 ONION_CYC 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 【算法】有上下界网络流-无源汇(循环流) 【题解】http://www.cnblogs.com/onioncyc/p/6496532.html //未提交 #include<cstdio> #include<algorithm> #include<cstring> using namespace s 阅读全文
posted @ 2017-03-17 20:07 ONION_CYC 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 【算法】矩阵快速幂 【题解】T*A(n-1)=A(n)矩阵如下: a 1 * x(n-1) 0 = xn 0 0 1 c 0 c 0 防止溢出可以用类似快速幂的快速乘。 #include<cstdio> #include<algorithm> #define ll long long using n 阅读全文
posted @ 2017-03-09 22:05 ONION_CYC 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 【算法】矩阵快速幂 【题解】 根据f[n]=f[n-1]+f[n-2],可以构造递推矩阵: $$\begin{vmatrix}1 & 1\\ 1 & 0\end{vmatrix} \times \begin{vmatrix}f_n \\ f_{n-1} \end{vmatrix}=\begin{vm 阅读全文
posted @ 2017-03-09 15:31 ONION_CYC 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 【算法】区间DP 【题解】 注意先输出右括号后输出左括号。 f[i][i+x-1]=min(f[i][i+x-1],f[i][j]+f[j+1][i+x-1]+p[i]*p[j+1]*p[i+x]) x为当前区间长度,i为左端点,i+x-1为右端点,j为分割点。 矩阵Ai为Pi*Pi+1。 初始值f 阅读全文
posted @ 2017-03-09 14:08 ONION_CYC 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 【题意】m个人修n辆车,时间为给定的表格a[i][j],一个人修完一辆才能修下一辆,求每辆车修完时间的总和。m<=9,n<=60。 【算法】最小费用最大流,二分图 【题解】将人放左边,将车放右边构成二分图,车向T连容量为1的边即可保证每辆车只修一次。 每个人有可能修多辆车,将每个人拆成n个点,每个点 阅读全文
posted @ 2017-03-08 19:59 ONION_CYC 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 【算法】最短路(floyd)+状态压缩型动态规划 【题解】 经典的TSP问题(货郎担问题):求最小权哈密顿回路(遍历全图点一次且仅一次)。本题稍作改动,先说原TSP问题解法:状压DP。 状态用二进制表示每个点是否走过(状态也包括最后走的点),状态转移关键在于每个点都有且只有另一个点指向它,所以先可以 阅读全文
posted @ 2017-03-05 13:52 ONION_CYC 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 【算法】二分图最大匹配(最大流) 【题解】按(i+j)奇偶性染色后,发现棋子跳到的地方刚好异色。 然后就是二分图了,对于每个奇点向可以跳到的地方连边,偶点不需连(可逆)。 所以题目要求转换为求二分图上最大独立集(对于每条边,至少有一个点不被选中)。 最大独立集=总点数-最小割 //代码略 //hzw 阅读全文
posted @ 2017-03-03 21:41 ONION_CYC 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 【算法】二分图匹配(最大流) 【题解】对i+j进行奇偶染色,就可以保证相邻两格异色。 然后就是二分图了,对相邻格子连边跑最大流即可。 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const i 阅读全文
posted @ 2017-03-03 20:06 ONION_CYC 阅读(310) 评论(0) 推荐(1) 编辑