----------------2018.4.10更新-----------------------
原本这只是暑假刷题计划,后来因为某些原因,自己就不是很努力的刷题,现在情况有变,so,重新继续咯~
下个月26号省赛,扣去中间实训的一周时间和几次校赛,大概只有一个月时间。
目前计划是,每天基础算法题+cf上3题,专业课也先停了,自己这段时间只想认真写题。
昨天晚上又失眠了,虽然我知道保证训练效率的关键是得休息好,但是真的睡不着,大概是焦虑吧。这一次,不想功利性把比赛得奖当做最终目的,因为这除了让我更焦虑,改变不了任何问题。
冷静下来想了这样一个问题,这次省赛,我到底要达到怎样的目标,才算是一次成功?
自己的回答是,只要这一个月,我按照计划坚持下来,就算是对自己的一个交代。
网上找了各类题集,到时候挑题来写。
【字符串】
字符串专题算是搞得差不多了,来大概总结一下吧。
要掌握的算法:
1、KMP算法
作用是两个串之间的匹配,核心思想是pre[i]表示串B的最长的前缀与以i为结尾的后缀相同,每次匹配失败时,从i跳到pre[i]就可以了。
2、trie树
作用是存储许多个串,核心思想是除根节点每个点表示一个字母,从根节点到每个点的路径表示一个字符串,单词节点打上标记
3、AC自动机
作用是多个串的匹配,KMP+trie树,核心思想是fail[i]表示长度最长的某个前缀是i节点所代表的字符串的一个后缀,通过fail[i]处理出ch[x][i]表示x节点加入一个i字符后转移到的节点。注意可以结合dp来考察。
4、manacher算法
作用是处理出以每个位置为中心的最长回文串长度,核心思想是记录一个最长的延伸到的地方,利用对称的思想处理出一个当前位置的起始值,之后暴力匹配,比较神奇,时间复杂度很好证明。
5、后缀数组
作用是对单个字符串后缀排序,求两个后缀的LCP,核心思想是sa数组和height数组的求法,详见论文,不再过多赘述。
6、后缀自动机
作用是对单串建立自动机,能够给接受该串的每个子串,核心思想是每个节点代表多个字符串,其中每个节点的right集合相同,记录一个fa[i]表示最小的right集合使i的right集合是它的子集,具体还是要看论文。应用更加广泛。
7、hash
作用是判断两个字符串是否相同,核心思想是……
各大OJ的字符串题目:
1、hdu2222 Keywords Search
2、hdu2896 病毒侵袭
3、hdu3065病毒侵袭持续中
4、poj2778 DNA Sequence
5、hdu2243 考研路茫茫――单词情结
6、hdu2825 Wireless Password
7、hdu2296 Ring
8、hdu2457 DNA repair
9、hdu3341 Lost's revenge
10、ZOJ3494 BCD Code
11、poj1743 Musical Theme
12、poj1816 Wild Words
13、poj2752 Milking Grid
14、poj2774 Long Long Message
15、poj3376 Finding Palindromes。
16、poj3415 Common Substrings
17、poj3208 Apocalypse Someday
18、poj3261 Milk Patterns