谢卿云-2022010910017-字符串专题报告
B: 我承认阁下的字符串匹配很强
题意:
含有通配字符串的匹配问题;
思路:
采取暴力搜索文本串的思路;
假设当前搜索的位置为$$dfs(pos)$$,比较该位置往后的$$patlen$$个位置,观察是否能匹配,若能,便右移$$next$$个位置,若不能便右移一个位置,注意右移$$next$$个位置未必比右移一个位置更优,转移方程为$$dfs(pos)=max(dfs(pos+1),dfs(pos+next)+1)$$;
$$next$$是指模式串最长的前缀等于后缀的长度;
C: Necklace
题意:
找到字符串$$T$$所在的循环群字典序最小元;
思路:
循环群每一个元实际上都可以用原串的一个下标表示,因此无需复制;
比较不需要全串比较,只需要跳过前面相同的部分,比较第一个不同的字母即可;
暴力枚举所有的字符串,保持$$best$$的位置的更新;
C:Trap-Sirrom-Tunk
题意:
给定模式串与文本串,求解文本串的匹配次数;
思路:
$$KMP$$算法模板题;
找到模式串的$$next$$数组,考虑从前往后暴力遍历匹配,如果匹配失败则右移$$next$$个位置,否则答案自增1;
J: 数据攻防1
题意:
给定若干模式串,找到在文本串中出现的次数;
思路:
$$AC$$自动机模板题;
将每个模式串插入$$trie$$中,建立$$fail$$指针,遍历文本串,每次经过模式串在$$trie$$
树打的标记便自增1;
L: Obsession
题意:
在字符串末尾增加字符使得原串成为周期的;
思路:
利用$$KMP$$算法找到$$next$$数组,并且利用数组找到最佳的周期,如果原串是周期的倍数但是不等于周期,说明答案为0,否则,将原串补为最近的周期的倍数即可;