AC自动机
直接学AC自动机比较难理解,强烈建议先学完KMP和字典树并进行一定的练习后,对于失配指针和字典树构造有一定理解后再来学AC自动机的内容。有关AC自动机的详细介绍可见刘汝佳的《算法竞赛入门经典训练指南》P214.
给你一个字典(包含n个不重复的单词),然后给你一串连续的字符串文本(长为len),问你该文本里面的哪些位置正好出现了字典中的某一个或某几个单词?输出这些位...
分类:
其他好文 时间:
2015-03-29 23:50:15
阅读次数:
535
RMQ(Range MinimumQuery)问题
有关RMQ的详细介绍可见刘汝佳《算法竞赛入门经典训练指南》P197页
RMQ问题可以解决对于一个整数数组(当然也可以是其他可比较大小的元素类型)的任意区间[L, R]查询最值时,以O(1)时间复杂度回答询问。其实它就是一种数据压缩的思想。
RMQ能在经过O(nlogn)的时间预处理后,做...
分类:
其他好文 时间:
2015-03-15 16:57:14
阅读次数:
148
树状数组
关于树状数组的详细介绍可见刘汝佳《算法竞赛入门经典:训练指南》
对于一个n元素的数组A[n],可执行如下操作:
Add(I, d):让A[i]变成A[i]+d。
Query(L, R):返回A[L]+A[L+1]+…+A[R]。
注意:树状数组只能计算A[1]开始的和,A[0]这个元素是不能用的。上面操作复杂度都是...
分类:
编程语言 时间:
2015-03-14 21:44:37
阅读次数:
206
第四章小问题集锦以上是我这一章课后题思考的流程,有错误和不严谨地方请直接指出!1、解方程组任务一:使用assert宏,解不唯一时异常退出#include //x=(ce-bf)/(ae-bd), y=(cd-af)/(bd-ae)int solve(double a, double b, doubl...
分类:
编程语言 时间:
2015-02-15 18:08:07
阅读次数:
220
欢迎交流讨论!@2-1#include using namespace std;ifstream fin("aplusb.in");ofstream fout("aplusb.out");int main(){ int n; while(fin>>n){ int count...
分类:
编程语言 时间:
2015-02-13 11:32:45
阅读次数:
120
版权所有,欢迎转载,转载请注明出处,谢谢
生成1~n的排列
递归思想:先输出所有以1开头的排列(这一步是递归调用),然后输出以2开头的排列(这一步是递归调用),接着是以3开头的排列······最后才是以n开头的排列。
//vs2012测试代码
#include
using namespace std;
void print_permutation(int n, i...
分类:
编程语言 时间:
2015-02-07 11:49:57
阅读次数:
178
数据结构基础
UVa 10004 二染色:二部图的判定。(bfs或dfs遍历的过程进行染色,看是否有冲突)UVa 10129 单词:有向图的欧拉道路。UVa 10054 项链:无向图的欧拉回路,首尾相接输出路径。UVa 10596 清晨漫步:无向图的欧拉回路。(对于欧拉道路或回路,在判断连通性等时注意先 if 下要访问的顶点是否出现。)...
分类:
编程语言 时间:
2015-02-04 14:42:37
阅读次数:
350
/*《算法竞赛入门经典第二版》 P35 习题2-4; 输入两个正整数 n int main(){ int m,n,i,j=1; while(scanf("%d%d",&m,&n) != EOF) { double sum = 0; ...
分类:
编程语言 时间:
2015-01-28 23:57:43
阅读次数:
955
1. 常见的数列总结(1)斐波那契数列: 如何实现斐波那契数列,我们可以采取如下方法: (1)递归求解(慢)(2)递推法 (3)矩阵快速幂 下面给出矩阵快速幂的由来: 除了这些问题,我们对于斐波那契数列还可能涉及高精度数的处理问题。(2)卡特兰数 卡塔兰数是组合数学中一个常...
分类:
编程语言 时间:
2015-01-24 18:35:20
阅读次数:
237
基础知识整理:(1)加法原理(2)乘法原理(3)容斥原理(注意变式问题)(4)排列组合公式的应用及变形: 排列的公式: 其变形为: 与组合的关系如下(以下第一个公式很重要): 排列组合公式的重要推论: 推论1:...
分类:
编程语言 时间:
2015-01-23 22:46:18
阅读次数:
198