摘要: Trie 树 字典树,用于存储和查询数量较大的字符串。 例题:洛谷P2580 KMP算法 支持单个模式串匹配。 思想:用自己匹配自己。核心是next数组。 例题:洛谷P3375 AC自动机 支持多模式串匹配。 思想:Trie树+KMP算法;也可以看做模式串有多个的KMP算法在Trie树上的实现。 M 阅读全文
posted @ 2017-05-04 15:17 3918张佳 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 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 阅读全文
posted @ 2017-08-05 09:17 3918张佳 阅读(90) 评论(0) 推荐(0) 编辑
摘要: #include <iostream> #include <cstdio> #include <cstring> #include <string> using namespace std; string a1, b1; int a[510], b[510], c[510]; int lena, l 阅读全文
posted @ 2017-08-04 15:12 3918张佳 阅读(102) 评论(0) 推荐(0) 编辑
摘要: #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)... 阅读全文
posted @ 2017-06-29 20:33 3918张佳 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 即支持区间修改(区间加)和区间查询。 (这里的修改顺序对结果无影响) 代码如下: 题目见洛谷P3372 (貌似也可以用分块和树状数组水过的样子,虽然我暂时并不知道树状数组是怎么做到的(嗯,以后一定会学的) 阅读全文
posted @ 2017-06-18 11:45 3918张佳 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 利用倍增的思想,在O(N log N)的时间内构造出来。 这里不提供思路,只提供代码的讲解。 讲解在代码的注释里。 (无注释版) #include <iostream> #include <cstdio> #include <cstring> #include <cmath> using names 阅读全文
posted @ 2017-06-12 07:30 3918张佳 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 方法一:离散化+树状数组 模板如下: #include<iostream> #include<cstdio> #include <algorithm> using namespace std; const int MAXN=40001; int n, a[MAXN], tree[MAXN], tot 阅读全文
posted @ 2017-06-02 09:48 3918张佳 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 两种方法:prim:和克鲁斯卡尔,推荐后者。 prim: (其实和Dijkstra是一个东西,只有几处代码不同) 克鲁斯卡尔: 用了并查集的思想,比较推荐 未完成的Prim堆优化 #include <iostream> #include <cstdio> #include <queue> #defi 阅读全文
posted @ 2017-05-07 10:09 3918张佳 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 路径压缩+按秩合并 例题 洛谷T3766 //find与fa引发的血案 题目描述 有一个 M 行 N 列的点阵,相邻两点可以相连。一条纵向的连线花费一个单位,一条横向的连线花费两个单位。某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通。 输入输出格式 输入格式: 第一行输入 阅读全文
posted @ 2017-05-06 11:47 3918张佳 阅读(206) 评论(0) 推荐(0) 编辑