随笔分类 -  ---字符串处理---

摘要:题目链接:poj 2406 Power Strings 题意: 给你一个字符串,让你找出这个字符串的最大循环次数,及最小循环节。 题解: 用kmp的nxt数组搞搞,L=j-nxt[j],为前缀j的最小循环节。 1 #include<cstdio> 2 #include<algorithm> 3 #i 阅读全文
posted @ 2017-07-30 21:16 bin_gege 阅读(128) 评论(0) 推荐(0)
摘要:题目链接:hdu 5995 Guessing the Dice Roll 题意: 有一个6面的骰子,有n(n≤10)个人每个人猜了一个长度为l(l≤10)的序列,不停的掷骰子直到满足一个人的序列则那个人获胜,求每个人获胜的概率。 题解: 将他们猜的串插入AC自动机,然后转移k次,这里k要足够大才能收 阅读全文
posted @ 2017-07-29 15:15 bin_gege 阅读(168) 评论(0) 推荐(0)
摘要:题目链接:hdu 4758 Walk Through Squares 题意: 给你一个n*m的网格,现在你要从(1,1)走到(n,m),每次只能向右走或者向下走,走完后会形成一个包含R,D的序列,这个序列必须要包含题目给出的两个字符串,问有多少种方案。 题解: 由于要从(1,1)走到(n,m),所以 阅读全文
posted @ 2017-07-29 12:35 bin_gege 阅读(660) 评论(0) 推荐(1)
摘要:题目链接:UVALive - 4811 Growing Strings 题意: 给你n个字符串,问你最多能选出多少个字符串,使得s[i]是s[i+1]的子串。 题解: 先将所有的字符串插入AC自动机,将所有字符串按长度排序后,显然dp[i]=max{dp[j]}+1,其中s[j]是s[i]的子串。然 阅读全文
posted @ 2017-07-29 10:22 bin_gege 阅读(118) 评论(0) 推荐(0)
摘要:题目链接:hdu 4057 Rescue the Rabbit 题意: 给出一些模式串,每个串有一定的价值,现在构造一个长度为M的串,问最大的价值为多少,每个模式串最多统计一次。 题解: 由于每个模式串最多统计一次,所以我们要考虑记录是否已经存在该串。 考虑dp[i][j][k]表示当前考虑到i的长 阅读全文
posted @ 2017-07-28 21:09 bin_gege 阅读(163) 评论(0) 推荐(0)
摘要:题目链接:hdu 5785 Interesting 题意: 有一个长度为n的串(n<=10^6),对 1 <= i <= j < k <= length(s) . 如果[i,j]和[j+1,k]都是回文串。则对答案的贡献为 i*k ,求贡献和。 题解: 详细题解传送门 1 #include<bits 阅读全文
posted @ 2017-07-21 00:39 bin_gege 阅读(488) 评论(0) 推荐(0)
摘要:题目链接:hdu 5782 Cycle 题意: 给出两个字符串,判断他们每一个前缀是否循环同构,循环同构的意思就是,字符串首位相接拼成一个环,两个环通过旋转可以相等。 题解: 传送门 1 #include<bits/stdc++.h> 2 #define mst(a,b) memset(a,b,si 阅读全文
posted @ 2017-07-20 15:05 bin_gege 阅读(182) 评论(0) 推荐(0)
摘要:题目链接:Educational Codeforces Round 25 F. String Compression 题意: 给你一个字符串,让你压缩,问压缩后最小的长度是多少。 压缩的形式为x(...)x(...) x表示(...)这个出现的次数。 题解: 考虑dp[i]表示前i个字符压缩后的最小 阅读全文
posted @ 2017-07-19 00:12 bin_gege 阅读(250) 评论(0) 推荐(0)
摘要:题目链接:Codeforces Round #423 Div. 2 C. String Reconstruction 题意: 给你n个子串和出现的位置,让你还原出字典序最小的原串。 数据保证至少有一个解。 题解: 先将所有的串用标号的方式存起来。 然后用将每个子串的出现位置放进对应的桶里。 两个子串 阅读全文
posted @ 2017-07-13 21:22 bin_gege 阅读(167) 评论(0) 推荐(0)
摘要:题目链接:hdu 2609 How many 题意: 给你一些01串,a能通过循环到b的算一个种类,问有多少种串。 题解: 最小表示法板子题。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=(a);i<=(b);++i) 3 using 阅读全文
posted @ 2017-07-06 21:06 bin_gege 阅读(181) 评论(0) 推荐(0)
摘要:题目链接:Educational Codeforces Round 21 G. Anthem of Berland 题意: 给你两个字符串,第一个字符串包含问号,问号可以变成任意字符串。 问你第一个字符串最多包含多少个第二个字符串。 题解: 考虑dp[i][j],表示当前考虑到第一个串的第i位,已经 阅读全文
posted @ 2017-06-27 21:39 bin_gege 阅读(230) 评论(0) 推荐(0)
摘要:题目链接:D. Cloud of Hashtags 题意: 给你n个字符串,让你删后缀,使得这些字符串按字典序排列,要求是删除的后缀最少 题解: 由于n比较大,我们可以将全部的字符串存在一个数组里面,然后记录一下每个字符串的开始位置和长度,然后从下面往上对比。 如果str[i][j]<str[i+1 阅读全文
posted @ 2017-02-26 10:47 bin_gege 阅读(281) 评论(0) 推荐(0)
摘要:题目链接:hdu 2459 Maximum repetition substring 题意: 让你找一个重复最多的子串,并且输出。 题解: 这个是论文题,看的cxlove的题解,不是很理解为什么这样就能完全找完,当作结论使吧。 1 #include<bits/stdc++.h> 2 #define 阅读全文
posted @ 2017-02-05 12:16 bin_gege 阅读(160) 评论(0) 推荐(0)
摘要:题目链接:hdu 1880 魔咒词典 题意: 给你一个10w的词典,让你输出对应的字段。 题解: map暴力存字符串肯定会卡内存,这里用BKDR字符串hash一下,用map映射一下。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i 阅读全文
posted @ 2017-02-04 20:20 bin_gege 阅读(124) 评论(0) 推荐(0)
摘要:题目链接:hdu 4821 String 题意: 给你一个字符串,问你有多少子串,满足长度为m*len,并且这个子串能分成m个len长度的不同串。 题解: BKDRhash+map来判重。注意的是要以len长分类来扫,这样才不会超时。 1 #include<bits/stdc++.h> 2 #def 阅读全文
posted @ 2017-02-04 19:28 bin_gege 阅读(117) 评论(0) 推荐(0)
摘要:题目链接:hdu 4125 Moles 题意: 给你n个数,让你按键值建一个平衡二叉树,然后奇数为0,偶数为1,然后可以遍历这颗树得到一个欧拉序列,现在给你一个串,问你出现了几次。 题解: 建树的时候要引用一个结论:就是新插入的数的父亲,要么是比它大的最小的那个元素,要么是比它小的最大的那个元素。 阅读全文
posted @ 2017-02-02 20:00 bin_gege 阅读(263) 评论(0) 推荐(0)
摘要:题目链接:hdu_5507_GT and strings 题意:给n个字符串和q个询问,每个询问给两个数字x,y,问1.x是否为y的子序列,2.x是否为y的子串,是输出1,否则输出0,每个询问输出2个数字 题解: 对于子序列,朴素的做法,每次询问的复杂度为max(str[x],str[y]),题目好 阅读全文
posted @ 2016-09-16 16:29 bin_gege 阅读(176) 评论(0) 推荐(0)
摘要:题目链接:hdu_4787_GRE Words Revenge 题意: 总共有n个操作,2种操作。每行读入一个字符串。 1.如果字符串以+开头,此为单词(即模式串,不考虑重复) 2.如果字符串以?开头,此为文章(即文本串,查询在此之前的单词在文本串中出现的次数) 题解: 强制在线的AC自动机 贴个大 阅读全文
posted @ 2016-09-02 04:25 bin_gege 阅读(179) 评论(0) 推荐(0)
摘要:题目链接:hdu_3247_Resource Archiver 题意: 有n个资源串,m个病毒串,现在要将所有的资源串整合到一个串内,并且这个串不能包括病毒串,问最短的串长为多少 题解: 将资源串和病毒串都插入到AC自动机中,分别做好标记,然后用bfs求出0节点和所有资源串互相的最短距离,最后就是一 阅读全文
posted @ 2016-08-31 21:55 bin_gege 阅读(166) 评论(0) 推荐(0)
摘要:题目链接:hdu_3341_Lost's revenge 题意: 有n个模式串,一个标准串,现在让标准串重组,使得包含最多的模式串,可重叠,问重组后最多包含多少模式串 题解: 显然是AC自动机上的状态压缩DP,不过如果直接开404*500的数组显示开不下,所以这样要将状态hash一下,然后再DP,因 阅读全文
posted @ 2016-08-31 16:11 bin_gege 阅读(153) 评论(0) 推荐(0)