• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






Storm_Spirit

不忘初心,方得始终。
 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

随笔分类 -  字符串

 
HDU 6208 The Dominator of Strings ——(青岛网络赛,AC自动机)
摘要:最长的才可能成为答案,那么除了最长的以外全部insert到自动机里,再拿最长的去match,如果match完以后cnt全被清空了,那么这个最长串就是答案。事实上方便起见这个最长串一起丢进去也无妨,而且更好写(时间也没有慢特别多)。 另外需要注意的一点是init()里头的memset只需要清空之前用过 阅读全文
posted @ 2017-09-21 18:25 Storm_Spirit 阅读(239) 评论(0) 推荐(0)
HDU 6194 string string string ——(2017沈阳网络赛,后缀数组)
摘要:思路见:http://blog.csdn.net/aozil_yang/article/details/77929216。 代码如下: 最后仍然需要注意的是我sa的模板中,除了rnk数组其他都是0-base的。 阅读全文
posted @ 2017-09-11 20:56 Storm_Spirit 阅读(241) 评论(0) 推荐(0)
计蒜客 UCloud 的安全秘钥 ——(hash)
摘要:题目链接:https://nanti.jisuanke.com/t/15769。 题意是求可以变换位置以后相同的子串有多少个,那么做法是只要每个数字的平方和,立方和以及四次方和都相同就可以了。 代码如下: 需要注意的是,所有串的长度不超过2e5,那么tot的个数不会太多,因为不同长度种类的个数从1开 阅读全文
posted @ 2017-06-04 21:02 Storm_Spirit 阅读(220) 评论(0) 推荐(0)
CodeForces 494B Obsessive String ——(字符串DP+KMP)
摘要:这题的题意就很晦涩。题意是:问有多少种方法,把字符串s划分成不重叠的子串(可以不使用完s的所有字符,但是这些子串必须不重叠),使得t串是所有这些新串的子串。譬如第一个样例,"ababa"和"aba",共有5种方法:{aba}(前3个),{aba}(后3个),{abab},{baba},{ababa} 阅读全文
posted @ 2017-04-13 23:04 Storm_Spirit 阅读(609) 评论(0) 推荐(1)
HDU 2243 考研路茫茫――单词情结 ——(AC自动机+矩阵快速幂)
摘要:和前几天做的AC自动机类似。 思路简单但是代码200余行。。 假设solve_sub(i)表示长度为i的不含危险单词的总数。 最终答案为用总数(26^1+26^2+...+26^n)减去(solve_sub(1)+solve_sub(2)+...+solve_sub(n))。前者构造f[i]=f[i 阅读全文
posted @ 2017-03-06 22:53 Storm_Spirit 阅读(131) 评论(0) 推荐(0)
POJ 2778 DNA Sequence —— (AC自动机+矩阵快速幂)
摘要:距离上次做AC自动机有很久了=。=,以前这题的思路死活看不懂,现在还是觉得很好理解的。 思路参见:http://blog.csdn.net/morgan_xww/article/details/7834801#。 我用cnt=1表示这个节点是危险的,然后再匹配fail指针的时候,如果一个节点的前缀是 阅读全文
posted @ 2017-03-04 12:07 Storm_Spirit 阅读(215) 评论(0) 推荐(0)
HDU 3689 Infinite monkey theorem ——(自动机+DP)
摘要:这题由于是一个单词,其实直接kmp+dp也无妨。建立自动机当然也是可以的。设dp[i][j]表示匹配到第i个字母的时候,在单词中处于第j个位置的概率,因此最终的答案是dp[0~m][len],m是输入的长度,len是单词的长度。转移方程见代码,即在一个节点的位置时,枚举下一步的走法,乘以这种走法的概 阅读全文
posted @ 2017-01-18 10:25 Storm_Spirit 阅读(171) 评论(0) 推荐(0)
2016 China-Final-F题 ——(SA+二分)
摘要:其实是一个很经典的字符串问题,但是我们比赛的时候没出。 先看一下UVA11107这题,题意是,找出最长的一个字符串,在至少一半的字符串中出现过。只要把所有的字符串用不同的分隔符分开,然后SA一下,最后二分长度,用height将字符串分组,判断是否超过一半即可。要注意的是,因为分隔符单单用个char已 阅读全文
posted @ 2016-12-21 11:49 Storm_Spirit 阅读(186) 评论(0) 推荐(0)
UVALive - 4513 Stammering Aliens ——(hash+二分 || 后缀数组加二分)
摘要:题意:找一个出现了m次的最长子串,以及这时的最右的位置。 hash的话代码还是比较好写的,,但是时间比SA多很多。。 1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 using namespace std; 5 阅读全文
posted @ 2016-12-17 13:10 Storm_Spirit 阅读(131) 评论(0) 推荐(0)
HDU 3065 病毒侵袭持续中(AC自动机)
摘要:这题数据太水,一开始没有加上Get的方法也能AC。。话说AC自动机中一定要注意加上Get的方法!(不然,同一个后缀的其他单词就没被算上了。) 代码如下: ———————————————————————————————————————————— 发现上面的代码有问题(虽然能AC),正确代码如下: 1 阅读全文
posted @ 2016-10-22 12:42 Storm_Spirit 阅读(154) 评论(0) 推荐(0)
HDU 2222 Keywords Search(AC自动机入门)
摘要:题意:给出若干个单词和一段文本,问有多少个单词出现在其中。如果两个单词是相同的,得算两个单词的贡献。 分析:直接就是AC自动机的模板了。 具体见代码: 顺便注意上面注释中的拓展点。 ———————————————————————————————————————————————— 发现上面的代码有问题 阅读全文
posted @ 2016-10-18 22:53 Storm_Spirit 阅读(164) 评论(0) 推荐(0)
CodeForces 519D A and B and Interesting Substrings ——(奥义字符串)
摘要:题意:给出26个字母每个字母的价值,问字符串中有多少个满足以下条件的子串: 1.子串的第一个和最后一个相同 2.子串除了头和尾的其他字符的价值加起来和尾0 这题普通方法应该是O(n^2),但是在1e5的条件下肯定会超时,所以学习了大力学长奥义的O(n)方法。具体方法也说不清楚,看代码吧,很短,也容易 阅读全文
posted @ 2016-07-07 15:50 Storm_Spirit 阅读(292) 评论(0) 推荐(0)
CodeForces 631D Messenger —— (kmp的应用)
摘要:这题是一个kmp的应用,思路是有,但是代码实现能力太弱,细节考虑不全,敲了很长时间才AC。。 题意:字符串用如下的方法表示,例如aaabbbbcc表示为3-a,4-b,2-c。那么问t串在s串中出现了多少次。这题的字符串总长是很长的,如果扩展为原长再kmp内存都不够。那么只能对缩写的状态进行kmp。 阅读全文
posted @ 2016-07-07 15:42 Storm_Spirit 阅读(649) 评论(0) 推荐(0)
Palindrome Degree(CodeForces 7D)—— hash求回文
摘要:学了kmp之后又学了hash来搞字符串。这东西很巧妙,且听娓娓道来。 这题的题意是:一个字符串如果是回文的,那么k值加1,如果前一半的串也是回文,k值再加1,以此类推,算出其k值。打个比方abaaba,k值为3,abaxxaba,k值为1。现在,给出一个串,让你求这个串的所有前缀(包括本身)的k值的 阅读全文
posted @ 2016-07-06 19:54 Storm_Spirit 阅读(291) 评论(0) 推荐(0)
ACM之路(15)—— 字典树入门练习
摘要:刷的一套字典树的题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=120748#overview 个人喜欢指针的字典树写法,但是大力喜欢数组的写法,反正是一个队的,互补一下反而更好- 。-本来前几题我的指针写法都是用new的,后来发 阅读全文
posted @ 2016-07-05 17:46 Storm_Spirit 阅读(364) 评论(0) 推荐(0)
2016"百度之星" - 初赛(Astar Round2A)1005 BD String(HDU5694)——找规律、字符串对称、分治
摘要:分析:按照题目所给的意思每次处理得到的新的字符串都是具有高度对称性的,举个例子,如题目所给的第三个字符串,最中间的是B然后两边分散开去,一边是B的话另外一边关于这个中心对称的那个位置一定是D,反过来同理。那么从任意一点,只要找出他的对称中心,从对称中心的另一边到这一点他们之间的所有字符中,去除掉对称 阅读全文
posted @ 2016-05-22 13:06 Storm_Spirit 阅读(197) 评论(0) 推荐(0)
ACM之路(12)—— KMP & 扩展KMP & Manacher
摘要:最近做完了kuangbin的一套关于kmp的题目(除了一道字典树的不会,因为还没学字典树所以先放放),做个总结。(kuangbin题目的链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70325#problem/A) 说实话,kmp这 阅读全文
posted @ 2016-05-15 19:30 Storm_Spirit 阅读(403) 评论(0) 推荐(0)