字符串
timidcatt
永远不要放弃战斗
展开
-
Tandem Repeats? Educational Codeforces Round 163 (Rated for Div. 2) 1948D
假设我们已经确定了当前要匹配的str的长度为len,那么要做的就是当前位置i和i+len的位置进行匹配,如果能匹配就就分别后移两个指针,直到匹配的字母数等于len,如果不匹配,因为要匹配的位置都是固定好的,所以下一个要匹配的位置就是失配位置的下一个位置。题目大意:给出一个字符串s,s中可能存在能代表任意字母的?思路:要找这样的合法子串相当于找一个长度为len子串str,使得这个子串,后面的len个字母组成的字符串和str相同,所以我们首先要确定的就是这样的Str的长度。2原创 2024-03-16 14:04:55 · 610 阅读 · 0 评论 -
J. Similarity (Easy Version) 2023 Jiangsu Collegiate Programming Contest, 2023 National Invitational
思路:对于两个字符串s1,s2,令dp[i][[j]表示s1的前i个字符和s2的前j个字符中的最长公共字串的长度,遍历s1同时遍历s2,如果当前遍历到的两字符相同,那么就从两个字符串的上一个位置转移过来+1,dp[i][j]=dp[i-1][j-1]+1,否则dp[i][j]=0,dp[i][j]的最大值记为最长公共子串的长度。题目大意:有n个字符串,问这些字符串两两匹配的最长公共子串的最大长度是多少。原创 2023-10-26 20:19:19 · 208 阅读 · 0 评论 -
C. Decreasing String Educational Codeforces Round 156 (Rated for Div. 2)
但这样遍历ans次时间复杂度显然不能接受,通过进一步观察发现,我们要删ans个字母时,在找到一个当前字母大于下一个字母的位置时,要往前检查前面的字母是否也大于下一个字母,如果大于,前边的也要删,所以我们用栈去维护最终的s[ans],只要当前栈顶字母>当前字母,就将栈顶字母弹出,最终栈内的字母形成的字符串的前缀就是s[ans],这个字符串中的第N个字母就是答案,后缀是没有影响的,所以有时不用。s[1]长度不超过1e6。原创 2023-10-10 09:51:12 · 331 阅读 · 2 评论 -
Bobo String Construction 2023牛客暑期多校训练营4-A
思路:一开始很容易想到如果t里有1,s就全0,否则s就全1,但当t=a+n*0/n*1+a这样时,例如001000001,110111110,n=3,这时s就对应的不能等于全0/全1,但至少有一种可以,也就是对于前者我们可以选111,对于后者选000,所以我们全0或全1都试一下,用kmp分别检验是否合法,都不合法就输出-1(但经测试其实没有-1的情况)题目大意:给出一字符串t,求一个长为n的字符串,使t+s+t中包含且仅包含两个t。1原创 2023-07-28 23:27:57 · 643 阅读 · 0 评论 -
Cyclically Isomorphic hdu7279
思路:如果一字符串s1能通过右移操作变成s2,那么s1一定是s2+s2的子串,因为要知道任意两个字符串是否符合条件,那么就相当于对于每个字符串si,我们得到他的匹配串为si+si,然后将其他字符串sj作为模式串,能成功匹配的,两个字符串就可以相等,所以我们将所有原始字符擦混放入AC自动机中,然后将每个字符串的两倍作为匹配串去匹配,就能得到任意两个字符串是否能相等,时间复杂度O(n*m)原创 2023-07-21 09:59:36 · 93 阅读 · 0 评论 -
2023湘潭邀请赛 K. Similarity (Hard Version) gym104396K
思路:首先,当m=0时,每两个字符串中都不能有相同的字母,所以每个字符串中都只能使单一字母的复制,n>26时则无法构造,m不等于0时,每两个字符串中要至少有一个字母不相同,所以m原创 2023-05-30 13:28:35 · 327 阅读 · 0 评论 -
A. Two Towers codeforces1795A
思路:因为只能移动最右端的字符,那么我们不妨直接考虑极端情况:将s2中最右端的字符依次移到s1最右端,也就是将s2首尾倒置以后连到s1最右端,然后我们要讨论的问题就是在哪里令这个新的字符串分成原来的两个字符串使其满足条件,因为能断开的位置只有一个,所以这个融合成的字符串不能有超过1个地方有两个相邻的相同字母。题目大意:有两个由'R'和‘B’组成的字符串s1和s2,可以将s1或s2最右端的一个字符放到另一个字符串最右端,问能否使两个字符串中都不存在相邻两字母相等的情况。原创 2023-02-17 18:26:38 · 369 阅读 · 0 评论 -
C. Flexible String codeforces1778C
思路:因为操作的次数越多,答案的数量肯定不会变小,所以从a中选出的不同字母的数量k应为min(k,m(a中不同字母数)),然后我们发现从最多10个字母中选k个字母最多只有C(5,10)=252种可能,那么我们对每一种选择出来的字母,遍历字符串,替换相应字符并统计即可。题目大意:有两个长度为n的字符串a,b,每次操作可以选出字母表中的一个字母,并使a中所有该字母分别变成任意的字母,最多操作k次,问最多有多少个数对l,r使a[l],a[r]之间的满足a=b的子串数量最多。1原创 2023-02-02 17:18:11 · 303 阅读 · 2 评论 -
2022 ICPC 杭州 K. Master of Both gym104090K
思路:一个字符串要比另一个字符串大只要最长公共前缀后面的一个字母更大即可,所以我们建立字典树来储存n个字符串,然后记录以p为前缀的字符串数量cnt[p],然后对于每个节点,统计这个节点和子节点组成的数对数量pa,即子节点的cnt,对于每次询问,遍历每两个字母i,j,pa[i][j]即为最长公共前缀后面一个字母分别为i和j时的字符串数。题目大意: 有n个字符串和q次询问,每次询问给出一个不同的字母表,问这n个字符串中有多少逆序对。原创 2023-01-03 17:21:52 · 489 阅读 · 0 评论 -
2022ICPC杭州 F. Da Mi Lao Shi Ai Kan De codeforces gym 104090F
题目大意:有n组字符串每组中有m个字符串,要求输出含有"bie"的字符串,同一字符串只输出第一次,如果一组字符串中都没有能输出的字符串,则输出"Time to play Genshin Impact, Teacher Rice!思路:我们遍历每个字符串即可判断其中是否有"bie",有的话就存入一个map容器中,如果map容器中没有这个字符串,则为合法的字符串。原创 2023-01-02 14:10:35 · 261 阅读 · 0 评论 -
剪花布条 hdu2087
思路:KMP模板题,先求出p串每个位置的最长公共前缀后缀长度,从而得出每次字符串失配后,字符串p向右移动的字符数,本题特殊的是一个p被取出后,这些字符相当于从s中删去,所以需要记录上一次匹配的位置,如果当前匹配的位置距离上次相差至少p,才更新答案。题目大意:给出一个长为n的字符串s,和一个长为m的字符串p,问在字符串s中能取出多少p。原创 2022-11-22 20:35:32 · 142 阅读 · 0 评论 -
Keywords Search hdu2222
思路:AC自动机模板题,先构建好字典树,然后构建失配指针,在匹配时沿着失配指针的方向走,在遍历的过程中累计出现过的单词数量,例如统计在字符串shers中出现过几个单词,我们先用he,her,hers,his,she即个单词构建字典树如下。,匹配成功she,5号节点的失配指针指向2号节点,又匹配成功he,继续匹配第四个字符r,5号节点的r子节点指向其失配指针的r子节点,因此访问8号节点,继续匹配第5个字符s,匹配成功hers。题目大意:有n个单词,和一个长度为1e6的字符串,问这个字符串中出现过多少个单词。原创 2022-11-21 19:34:28 · 101 阅读 · 0 评论 -
D. Problem with Random Tests codeforces 1743D
题目大意:有一个长度为n的由0和1组成的字符串,现要求选择两个子串,使得这两个子串的按位或最大,求这个最大值,原创 2022-10-18 15:46:34 · 265 阅读 · 0 评论 -
D. Prefixes and Suffixes codeforces 1730D
而且我们不难发现由两个相等的字符串可以得出符合以上结论的字符串,且只有满足以上结论的字符串才能变成相等(可以反证,此处不在赘述),那么我们只要记录字符对的数量,验证字符对的数量是否都为偶数或者有且只有一个字符对数量为奇数,然后再看数量为奇数的字符对两字符是否相等,都满足就是YES。思路:我们从他给的字符串很难推出如何操作使他们相等,那我们不妨从结果入手,假设两个字符串相等,对他们进行操作,找出他们能构造出的字符串的规律。原创 2022-10-04 14:59:05 · 210 阅读 · 0 评论 -
Colored Sticks poj2513
思路:每一个木棒可以看做一条边,每种颜色看成一个点,就变成了欧拉通路问题,能否从一个点出发,能否经过每条边仅一次,走过所有节点,而无向图要构成欧拉通路的条件就是,图是连通图,且没有度数为奇数的点或有且只有两个,连通图可以用并查集判断,如果所有点都是一个点的子节点,则是连通图,用字典树统计四种颜色的编号。题目大意:有一些木棒,每个木棒两端各一一种颜色,用一个字符串表示,问能不能把木棒排成一条直线,使相同的颜色接在一起。原创 2022-08-24 17:44:44 · 98 阅读 · 0 评论 -
Babelfish poj2503
思路:构建字典树,每一个节点都是一个字母,trie[i][j]表示树上的第i个节点是26个字幕中的第j个字母,值表示这个字母所在单词的下一个字母的节点编号,end[p]表示一个单词在p号节点结束,在查询时如果遍历要查找的字符串后正好在p点,则说明有这个单词。题目大意:有10000个外语单词和10000个英语单词对应,现给出10000个外语单词,问对应的英语单词是什么,没有对应则输出eh。原创 2022-08-24 14:52:47 · 104 阅读 · 0 评论 -
KFC Crazy Thursday
得到以每个字符串为中心,最大的回文半径是多少,同时对于遍历到的每个回文串,如果结尾是k,f,c,就计数,最后累加统计的数量。题目大意有一个长度为n的字符串,问分别以k,f,c结尾的回文串有多少个。思路先用manacher算法(...原创 2022-08-01 20:47:59 · 1644 阅读 · 0 评论