随笔分类 -  算法模板

摘要:/**nt[i]的代表以0...i的最长公共前缀后缀即:0...nt[i] == i-nt[i]...i**/int nt[MAXN];/**nt[]数组的取得如果没有符合的公共前后缀 nt[i]=-1;如果nt[i]=k; s[i+1] = s[k+1] nt[i] = k+1;**/void G... 阅读全文
posted @ 2015-05-01 23:17 hqwhqwhq 阅读(125) 评论(0) 推荐(0)
摘要:/*** dfs遍历一遍整个图,标出时间戳 dfs_clock,保存在pre[]里 遍历后得到一个森林 对于每一颗树,每个节点是割顶的情况: 1:根: 有两个或两个以上的子节点 2:非根: 对于节点u,low(u)表示u及u的所有节点的反向边所能... 阅读全文
posted @ 2015-04-21 00:16 hqwhqwhq 阅读(143) 评论(0) 推荐(0)
摘要:具体算法可以看 2009年的漆子超的论文以合法点对为例:进行分治,由于每次找的是重心,深度做多是log(n)。大体来说就是 1:先找到该该数的重心,只需要把数遍历一遍就好了。复杂度:o(n)2:计算各个节点到重心的距离。复杂度:o(n)3:对重心距离进行排序,然后计算d[i]+d[j]#includ... 阅读全文
posted @ 2015-04-15 23:51 hqwhqwhq 阅读(167) 评论(0) 推荐(0)
摘要:蓝桥杯才发现图论好久不碰了,果然全忘了。。。毕竟当时可能学得不精。。。现在来补一下。。。const int N = 100+5;int n,m;int fa[N];///保存各个节点的根节点struct edge{ int u,v;///边的两端 int w;///边的权值}e[N*N]... 阅读全文
posted @ 2015-04-14 20:20 hqwhqwhq 阅读(122) 评论(0) 推荐(0)
摘要:快速幂:///a^n%mint quickpow(int a,int n,int m){ int ans=1; while(n){ if(n&1) ans = (ans*a)%m; a = (a*a)%m; n>>=1; }}矩阵的快速幂:... 阅读全文
posted @ 2015-04-13 00:53 hqwhqwhq 阅读(125) 评论(0) 推荐(0)