----字符串----
文章平均质量分 76
beihai2013
这个作者很懒,什么都没留下…
展开
-
KMP CSU1581 Clock Pictures
CSU1581 Clock Pictures 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=158915 题意:分别给出两个钟表上针的位置,判断是否可以通过旋转使两个钟表相等 思路:KMP。存储两个钟表的相邻指针差值的数组,任选一个数组作为模式串Fail,另一个作为比较串。由于会循环比较,直接把比较串扩展成原原创 2015-04-29 15:29:10 · 554 阅读 · 0 评论 -
HDU 5510 KMP
HDU 5510 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5510 题意: 一些字符串,问下标最大的字符串使得下标小于它的字符串中存在一个字符串不是它的子串(连续) 思路: 暴力即可,对于一个串,如果当前找到的串是它的母串,则下一次这个串不用遍历。 具体匹配两个串用KMP就可以。 注意KMP的形成失配函数f的时候,是f[i+1]原创 2015-11-01 19:19:36 · 696 阅读 · 0 评论 -
POJ 3156 HASH 期望DP
/* DP方面是很好理解的,正常的期望DP用记忆化搜索处理关键是怎么表示连通块的状态首先连通快内部情况对题目解决无关重要,只需要连通快的点的个数就可以 于是我们先把每个连通快抽象成一个个具有权重的点 然后用字符串的最小表示法存储点序列 在此基础上使用HASH表示整个序列状态,主要用于记忆化搜索的时候判定是否出现过答案 如果状态出现过,则返回相应值 如果未出现过,在在原数组上再次进行DP注意原创 2016-03-16 11:30:19 · 356 阅读 · 0 评论 -
HDU 4821 Hash
HDU 4821 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4821 题意: 一个字符串(len <= 1e5)。 问存在几个连续子串,使得它长度为N*M,且平均分成N分后,每个子串都不一样。 思路: 复现的时候竟然想到了字符串hash,但是不清楚hash的机理,所以存了个线段树来查询,妥妥TLE。 然后搞了个Trie树,又妥妥T原创 2015-11-07 21:21:08 · 402 阅读 · 0 评论 -
POJ 1200 Hash
POJ 1200 题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17714 题意: 问长度为n的连续子串在一个给定串种有几种。 思路: 用Rabin-Karp的方法设计一下Hash值即可。由于数据范围小所以不需要模。 源码:#include <cstdio> #include <cstring> #i原创 2015-10-06 23:53:52 · 355 阅读 · 0 评论 -
POJ 3576 Hash Trie
POJ 3576 题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=16065 题意: 问怎样按照题目的规则得到最少的点(题意实在是无法描述) 思路: 首先知道Trie树能形成这些单词的字典树。然后就看树上有多少个子树可以合并。 所以问题转换成如何确定以某个点为根节点的子树的Hash值。 本题采用uns原创 2015-10-06 23:53:14 · 419 阅读 · 0 评论 -
HDU 5442 KMP + 最小表示法
HDU 5442 题目链接: 题意: 一个字符串里,从任意起点出发顺时针或者逆时针遍历字符串得到一个新的字符串。问得到的字典序最大的字符串。 存在多个相同的字符串时,输出起点最小的;起点相同时,优先输出顺时针。 思路: 最小表示法 + KMP。 顺时针,直接用最小表示法得到答案。 逆时针,把串翻转。先用最小表示法得到最大字典序的字符串A,再用KMP得到离起点最远的点匹配A。 然后原创 2015-09-17 19:22:52 · 398 阅读 · 0 评论 -
HDU 5414 字符串
HDU 5414 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5414 题意: 给两个字符串S,T,问能否把S转换成T。转换规则是,可以在S中已知字母后插入新字母,但是新字母不能与已知字母相同。 思路: 先说错误思路,比赛的时候构图构错,把图想成把所有的s元素拆开,然后往里面加缝隙加元素或者不加。应该是相同的连一块,不同的元素之间拆开原创 2015-08-20 20:13:47 · 527 阅读 · 0 评论 -
Hihocoder 1032 最长回文子串
题目链接: http://hihocoder.com/problemset/problem/1032 题意: 求一个字符串中最大回文串的长度 思路: 回文串第一题,通过叙述思路来整理如何做好回文串题。 看到的博客上说有四种算法,分别是暴力枚举(n^3),动态规划(n^2),中心算法(n^2)和manacher算法(n) 实现方式通过在相邻字符之间填充’#’的方法把字符串变为恒为奇数个原创 2015-06-20 11:53:17 · 295 阅读 · 0 评论 -
Trie树 Hihocoder 1014 Trie树
题目链接:http://hihocoder.com/problemset/problem/1014 题意:给一些字符串作为字典,再给一些前缀问前缀为这个的有多少个单词。 思路:Trie树模板。 建立的思想不难,用指针指向下一个字符。因为字符长度不定,而且如果是26字母的话就会过长,所以用指针来做最好。那么问题来了。 首先声明一个Trie的时候必须要把他里面标记置为0,把所有指向儿子的Tri原创 2015-04-28 09:11:59 · 310 阅读 · 0 评论 -
KMP Hihocoder1015 KMP
Hihocoder1015 KMP 题目链接:http://hihocoder.com/problemset/problem/1015 题意&思路:KMP版 基本上是靠自己试出来的。首先每个位置的fail值代表匹配值,即包括这个字符在内,得到前缀和后缀相同的最大前缀长度。如[0,j],[i-j,j]中设j为3,i为5,则fail[5] = j+1。 用文字叙述KMP流程 产生fail:原创 2015-04-29 11:14:27 · 323 阅读 · 0 评论 -
KMP POJ1961 Period
POJ1961 Period 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=10934 题意:给一个字符串,起点固定,终点从前往后遍历,输出存在以“某一前缀为周期串的原始串”的结点位置和根据前缀得到的周期。 思路:递推的思想,具体用KMP实现,照着大白书打的。注意个人使用的KMP是next表示长度,而遍历字符原创 2015-04-29 21:35:52 · 339 阅读 · 0 评论 -
12年成都 E 贪心+KMP HDU 4468
12年成都 E 贪心+KMP HDU 4468赛中的时候过的人不多,也没有什么具体的思路。发现问题可以转化为最短后缀,使得前面的字符串都是它的子串。甚至想着能不能枚举后缀,O(1)或者log的查询。然后就走入死角了。 实际上还是字符串的题目做的不够多。如果是倒序遍历的话,那查询的字符串操作也应该是倒序的,不存在一个倒序一个正序之说。再者,要检测之前是否为其子串,最坏情况下需要把整个字符串都遍历一遍,原创 2016-06-22 10:56:05 · 444 阅读 · 0 评论