摘要: 题目 Description 题解 dp苦手表示不会做qwq 看题解看老半天才理解。关键就是有次序条理地计数。 设$a_i$为包含以位置i为结尾的区间的所有取法。 用kmp找出所有子串t在母串结尾的位置,称这样的位置为好位置。 显然,区间[l,r]的所有方案即为$\sum_^$。所以关键是求$a_i 阅读全文
posted @ 2020-08-14 15:43 limil 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题目 Description 题解 比较关键的一点:如果a包含b,b包含c,则a包含c。 所以可以定义solve(p)为返回第p个字符串之前不能被p包含的字符串的最大位置,在递归过程中找到取最大答案。 细节详见代码。这样递归处理复杂度为O(n)。 #include <bits/stdc++.h> # 阅读全文
posted @ 2020-08-14 15:25 limil 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 题目 求出一个num数组一一对于字符串S的前i个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作num[i]。 输出$\prod_^L(num[i]+1)$对1,000,000,007取模的结果即可。 题解 先求出next数组。然后预处理一个tmp数组, 阅读全文
posted @ 2020-08-14 15:15 limil 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 题目 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字。 他的不吉利数字A1A2... Am(0<=Ai<=9)有M位,不出现是指X1X2...Xn中没有恰好一段等于A1A2...Am。(A1和X1可以为0) 题解 看到题目,很自 阅读全文
posted @ 2020-08-14 15:02 limil 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 题目 Tz养了一群仓鼠,他们都有英文小写的名字,现在Tz想用一个字母序列来表示他们的名字,只要他们的名字是字母序列中的一个子串就算,出现多次可以重复计算。现在Tz想好了要出现多少个名字,请你求出最短的字母序列的长度是多少。 (注:所有名字都不互相包含) 题解 两两单词连边,边权为两个单词重叠连接后增 阅读全文
posted @ 2020-08-14 14:33 limil 阅读(106) 评论(0) 推荐(0) 编辑