
ACM字符串问题
字符串
Ordinary_yfz
知乎个人主页zhihu.com/people/zyf-98-4,现在涉及CV,transfer learning,unsupervised,GAN,REID,OOL很多研究方向,会经常写一些综述/论文阅读笔记。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
文件压缩【字符串】
提高文件的压缩率一直是人们追求的目标。近几年有人提出了这样一种算法,它虽然只是单纯地对文件进行重排,本身并不压缩文件,但是经这种算法调整后的文件在大多数情况下都能获得比原来更大的压缩率。 该算法具体如下:对一个长度为n的字符串S,首先根据它构造n个字符串,其中第i个字符串由将S的前i-1个字符置于末尾得到。然后把这n个字符串按照首字符从小到大排序,如果两个字符串的首字符相等,则按照它们在S中的位置从小到大排序。排序后的字符串的尾字符可以组成一个新的字符串S’,它的长度也是n,并且包含了S中的每一个字符。最后转载 2020-05-11 20:03:29 · 1096 阅读 · 0 评论 -
字符串匹配:字符串hash,后缀数组,高度数组,AC自动机,KMP
一、字符串hash二、后缀数组三、高度数组四、KMP五、AC自动机一、字符串hash字符串hash+二分入门题寻找字符串s中字符串t出现的位置或次数的问题属于字符串匹配问题。我们在接下来的讨论中假设s的长度为n,T的长度为m。 最朴素的想法是,枚举所有起始位置,再直接检查是否匹配,复杂度为O(mn)O(mn)O(mn)的算法。还有几个更为高效的算法。而在此我们只介绍实现起来较为容易,...原创 2020-04-14 13:09:44 · 455 阅读 · 0 评论 -
POJ 3581 Sequence[后缀数组]:一串三分求最小
题目大意题目链接给N个数(N不超过200000), 保证第一个数比后面的都大, 要求你把数列分成连续的三段, 分别逆序再拼起来, 要求新的串字典序最小.思路分析一个直接的思路是想把最小的一个数作为第一段的末尾, 这样是不是最优的呢? 是的, 因为第一个数比后面的数都大, 于是你把所有的最小的数作为第一段的末尾逆序时, 最大的数之前的部分的字典序肯定不一样. 于是就先把整个序列逆序, 求一个...原创 2020-04-14 10:10:04 · 199 阅读 · 0 评论 -
2774:Long Long Message:字符串hash入门
题目大意题目链接给出两个很长的字符串S1,S2∣S1,S2∣<100000|S1,S2|<100000∣S1,S2∣<100000,求出S1,S2的最长的一个完全相同的连续序列的长度。思路分析显然是一道LCS的题目,但是不同点在于公共序列的连续,当然这个通过简单的修改LCS也是可以解决的,最大的问题在于字符串的长度,对于O(n2)O(n^2)O(n2)的复杂度而言,显然是...原创 2020-04-12 22:03:42 · 346 阅读 · 0 评论 -
AC自动机的跳转移边优化的理解+比赛模板
先上比赛模板#include<iostream>#include<vector>#include<algorithm>#include<string.h>#include<string>#include<cstdio>#include<queue>using namespace std;#def...原创 2020-04-11 15:44:36 · 345 阅读 · 0 评论 -
1080:Human Gene Functions:带权LCS解决基因组最大匹配
最长公共字串的变形问题,还需要努力啊这个思维水平。。。内附lcs的普通解法和内存优化写法。原创 2020-04-09 09:59:29 · 254 阅读 · 0 评论 -
这可能是我见过最详细的KMP教程
题目大意传送门给定单词W和文本T,计算W在T中出现的次数:W的所有连续字符必须与T的连续字符完全匹配。可能会发生重叠。思路分析最暴力的方法,依次遍历T的每个元素,一旦首个元素和W【0】匹配,就检查之后的字符串能不能完全和W匹配。复杂度O(∣W∣∣T∣)O(|W||T|)O(∣W∣∣T∣),卡死。稍微进阶一点:二分查找W[0]W[0]W[0]在TTT中的位置,找到就检查与之后是否完全匹配...原创 2020-04-07 12:49:43 · 1027 阅读 · 0 评论 -
1298:The Hardest Problem Ever:string类快速处理字符转换
题目翻译凯撒大帝生活在一个充满危险和阴谋的时代。凯撒所面临的最艰难的处境就是要保住自己的性命。为了生存,他决定创造第一个密码。这个密码是如此令人难以置信的声音,没有人不知道它是如何工作的。你是凯撒军队的副队长。你的工作是破译凯撒发出的信息并将其提供给你的将军。代码很简单。对于明文消息中的每个字母,将其向右移动5个位置以创建安全消息(即,如果字母是“A”,那么密文就是“F”)。由于您正在从Cae...原创 2020-03-31 09:36:41 · 292 阅读 · 0 评论 -
2406: Power Strings:另辟新径:easy快速幂判断字符乘方
题目大意题目链接给一个字符串a,它可以看成若干个相同的子串串联形成的,求最大串联次数n。思路分析打开题解一看大家都在KMP,孱弱瑟瑟发抖,写题时并不知道KMP,第一眼想着能不能那个二分,但是不满足单调性,于是尝试了一下从1−a.size()/21-a.size()/21−a.size()/2遍历长度lenlenlen,如果某个长度的串能经过a.size()/lena.size()/lena...原创 2020-03-28 12:21:47 · 204 阅读 · 0 评论 -
2503 Babelfish:字符串string类+map操作总结
题目大意你刚从滑铁卢搬到一个大城市。这里的人说一种听不懂的外国方言。幸运的是,你有一本字典可以帮助你理解它们。输入输入最多包含100,000个字典条目,后跟一个空白行,然后是一个消息,最多100,000个单词。 每个字典条目都是一行,其中包含一个英文单词,后跟一个空格和一个外语单词。 在词典中,没有外来词出现多次。 消息是外语单词序列,每行一个单词。 输入中的每个单词都是最多10个小写字母的...原创 2020-03-28 11:43:27 · 682 阅读 · 0 评论 -
2928:素数回文数的个数,回文数系列简单题
题目描述求11到n之间(包括n),既是素数又是回文数的整数有多少个。输入一个大于11小于1000的整数n。输出11到n之间的素数回文数个数思路只需要先将区间内的素数使用埃及筛法进行筛选,然后对于素数逐个判断是否为回文数即可。#include<iostream>#include<cmath>#include<iomanip>#include...原创 2020-03-14 09:07:38 · 1396 阅读 · 0 评论 -
各种回文子串相关问题及算法
文章较长,慎入,但是可以收获一大波方法和思路cases and solutions(题型一)经典回文子串问题方法一:最长公共子串常见错误算法复杂度分析方法二:暴力法复杂度分析方法三:动态规划复杂度分析方法四:中心扩展算法复杂度分析方法五:使用字符后缀数组与高度数组O(nlogn)O(n\log{n})O(nlogn)华丽解决。方法六:Manacher(马拉车) 算法O(n)O(n)O(n)完美...原创 2020-03-13 23:57:38 · 955 阅读 · 1 评论 -
Poj 1159 Palindrome,巧妙解决回文串问题
题目描述回文词是一种对称的字符串。任意给定一个字符串,通过插入若干字符,都可以变成回文词。此题的任务是,求出将给定字符串变成回文词所需要插入的最少字符数。比如 “Ab3bd”插入2个字符后可以变成回文词“dAb3bAd”或“Adb3bdA”,但是插入少于2个的字符无法变成回文词。注:此问题区分大小写思路解法一:奇思妙想首先,我们要摸清回文串的特性,回文就是正着读反着读一样,一种非常对称...原创 2020-03-13 23:56:02 · 922 阅读 · 0 评论 -
POJ 1008 && HDU 1444 Maya Calendar:40行轻松搞定日历转换
题目大意有两种历法第一种:一年 365 天, 19 个月,跟我们今天的日历模式差不多月的名字:pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu, uayet前 18 个月天的名字:0 - 19第 19 个月天的名字:0 - 4第二种:...原创 2020-03-13 19:46:19 · 221 阅读 · 0 评论 -
Poj-1002 487-3279:map,string,char*与string的转化
描述企业喜欢用容易被记住的电话号码。让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语。例如,你需要给滑铁卢大学打电话时,可以拨打TUT-GLOP。有时,只将电话号码中部分数字拼写成单词。当你晚上回到酒店,可以通过拨打310-GINO来向Gino’s订一份pizza。让电话号码容易被记住的另一个办法是以一种好记的方式对号码的数字进行分组。通过拨打必胜客的“三个十”号码3-10-1...原创 2020-03-03 21:50:15 · 181 阅读 · 0 评论