1.题目描述:点击打开链接
2.解题思路:本题利用KMP算法中失配函数的性质解决。我们仔细观察失配函数f就会发现,如果一个字符串P是一个周期串,且它的最后一个位置是i,那么i-f[i]一定是该周期串的一个最小的循环节的长度,这样,最大的k值就是i/(i-f[i])。这样,我们只需要寻找f[i]>0(因为k>0,因此不能让i-f[i]==i)且i%(i-f[i])==0的位置即可。
3.代码:...
分类:
其他好文 时间:
2015-08-28 02:12:30
阅读次数:
135
1.题目描述:点击打开链接
2.解题思路:本题利用Trie+dp解决。首先,令d(i)表示从字符i开始的字符串(即后缀S[i...L])的分解方案数,那么d(i)=d(i+len(x)|单词x是S[i..L]的前缀)。如果我们枚举单词,然后判断它是否为S[i...L]的前缀,时间无法承受。所以可以考虑事先把所有的单词存入Trie,然后试着在Trie中查找S[i...L]。查找时,如果找到了一个单...
分类:
其他好文 时间:
2015-08-28 00:54:11
阅读次数:
185
来源:《算法竞赛入门经典》例题5.1.3 题目:如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的串,输出它的最小周期。 样例输入:HoHoHo 样例输出:2 分析:...
分类:
编程语言 时间:
2015-08-27 20:39:42
阅读次数:
169
我们从例题入手来考虑仙人掌上DP的一般规律叭.Ex 1.仙人掌上的单源最短路问题
联想树上最短路,由于路径的唯一性可以直接做一遍O(n)的搜索.但是仙人掌上显然不具备路径的唯一性这种性质.
那么我们是否需要像对待一般的无向连通图一样使用最短路算法呢?
其实并不需要.
首先一遍DFS处理出仙人掌的结构关系.
然后我们从起点开始DP,假设当前DP到节点为x,那么枚举x的每一个儿子.如果该儿子节...
分类:
其他好文 时间:
2015-08-27 11:06:35
阅读次数:
194
首先膜一下vfk领先全球的动态仙人掌栽培技术…
然后谢谢Time-Machine学长在暑假集训时候讲了仙人掌DP.
然后感觉听得并不是很懂…所以再来对着论文学一遍顺便写一写例题代码
这一篇主要先学仙人掌的基础(定义和性质什么的)————————————线 割 分 是 我 >w<———————————————–
什么是仙人掌?
仙人掌是不含自环的,一条边最多属于一个简单环的无向连通图.
从...
分类:
其他好文 时间:
2015-08-27 09:38:51
阅读次数:
182
线段树或树状数组求逆序数
假设给你一个序列 6 1 2 7 3 4 8 5, 首先我们先手算逆序数, 设逆序数为 N;
6的前面没有比他大的数 N +=0
1的前面有一个比他大的数 N+=1
2的前面有一个比他大的数 N+=1
7的前面没有比他大的数 N+=0
... 最后得到 N = 0 + 1 + 1 + 0 + 2 + 2 + 0 + 3 = 9
其实我们可用用线段树,或者树状数组模拟这个过程。 又因为线段树和树状数组的效率较高,所以可行...
分类:
编程语言 时间:
2015-08-21 13:33:18
阅读次数:
242
紫书上网络流部分的第一道例题, 刚刚学了最大流,还没有理解二分图匹配 , 这里就只说一下我用最大流是怎么做的吧 。
我们可以假想一个源点,一个汇点,然后对于每一个设备的插头,从源点连一条线,对于每个插座,连一条线到汇点,且容量都为1 。...
分类:
其他好文 时间:
2015-08-20 21:00:34
阅读次数:
282
先说说种类并查集吧。种类并查集是并查集的一种。但是,种类并查集中的数据是分若干类的。具体属于哪一类,有多少类,都要视具体情况而定。当然属于哪一类,要再开一个数组来储存。所以,种类并查集一般有两个数组,一个存并查集内的父子关系,一个存各个节点所属的种类关系。以这道题为例(题意在后面,如果没有读题,可以...
分类:
其他好文 时间:
2015-08-19 22:45:33
阅读次数:
117
C程序的文件操作共涵盖7个例题,包含格式打印,文件读取,条件查找,矩阵的文件操作,数据格式输入及调用计算等内容。
文件操作使得程序有更强的拓展性,使其可以单独保存数据,这为程序的调试和优化打下了坚实的基础,为我们实现大规模计算提供了可能。至此,相信大家对文件操作也有了比较好的认识,无非是写入、读取、调用。
我们常常会听说C的强大,也是因为她有着文件操作的功能,而文件数据是可以方便重写和维护的。...
分类:
编程语言 时间:
2015-08-18 22:54:56
阅读次数:
172
二叉搜索树:二叉搜索树根节点的左边都比根节点小,右边都比根节点大。例题:输入一个数组,判断是否为二叉搜索树的后序遍历序列,如果是,返回true,如果不是,返回flase,假设没有重复的元素。思路:由于是后序遍历,所以数组的最后一个节点是根节点,而且,由于是二叉收索树,所以,前面的数据被分为两部分,右...
分类:
编程语言 时间:
2015-08-18 13:51:27
阅读次数:
136