摘要:
Trie 树 字典树,用于存储和查询数量较大的字符串。 例题:洛谷P2580 KMP算法 支持单个模式串匹配。 思想:用自己匹配自己。核心是next数组。 例题:洛谷P3375 AC自动机 支持多模式串匹配。 思想:Trie树+KMP算法;也可以看做模式串有多个的KMP算法在Trie树上的实现。 M 阅读全文
摘要:
1 void qsort(int l, int r) { 2 int i, j, mid, p; 3 i=l; j=r; 4 mid=a[(l+r)/2]; 5 do { 6 while (a[i]<mid) i++; 7 while (a[j]>mid) j--; 8 if (i<=j) { 9 阅读全文
摘要:
#include <iostream> #include <cstdio> #include <cstring> #include <string> using namespace std; string a1, b1; int a[510], b[510], c[510]; int lena, l 阅读全文
摘要:
#include #include #include #include using namespace std; struct BigInteger { static const int BASE=100000000; static const int WIDTH=8; vector s; BigInteger(long long num=0)... 阅读全文
摘要:
已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 即支持区间修改(区间加)和区间查询。 (这里的修改顺序对结果无影响) 代码如下: 题目见洛谷P3372 (貌似也可以用分块和树状数组水过的样子,虽然我暂时并不知道树状数组是怎么做到的(嗯,以后一定会学的) 阅读全文
摘要:
利用倍增的思想,在O(N log N)的时间内构造出来。 这里不提供思路,只提供代码的讲解。 讲解在代码的注释里。 (无注释版) #include <iostream> #include <cstdio> #include <cstring> #include <cmath> using names 阅读全文
摘要:
方法一:离散化+树状数组 模板如下: #include<iostream> #include<cstdio> #include <algorithm> using namespace std; const int MAXN=40001; int n, a[MAXN], tree[MAXN], tot 阅读全文
摘要:
两种方法:prim:和克鲁斯卡尔,推荐后者。 prim: (其实和Dijkstra是一个东西,只有几处代码不同) 克鲁斯卡尔: 用了并查集的思想,比较推荐 未完成的Prim堆优化 #include <iostream> #include <cstdio> #include <queue> #defi 阅读全文