KMP 算法最基本的应用场景是字符串的模式匹配,然而其应用远不止于此,在匹配字符串的过程中用到的一部分思想本身在一些场景中也可以得到应用,比如下面的这道求循环节的题。 题目大意就是给出一个字符串,然后求它的某个长度的前缀是否由循环节组成,若有则输出这个前缀的长度和循环节个数。 附上题目链接:[POJ ...
分类:
编程语言 时间:
2021-05-03 12:10:43
阅读次数:
0
IV.[SCOI2003]字符串折叠 一眼区间DP。 设$f[i][j]\(表示:将区间\)[i,j]$内的所有东西压一起的最短长度。 显然,有两种方法: 1.在中间一刀劈开,然后拼一起。 2.找到它的循环节,然后把整个串压一起。 至于找循环节吗……枚举循环节长度,然后无脑哈希一下。 注意,你可能会 ...
分类:
其他好文 时间:
2021-03-31 12:02:22
阅读次数:
0
Power Strings Description Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = "def" then a*b = "abcde ...
分类:
其他好文 时间:
2021-01-26 11:47:12
阅读次数:
0
这问题咕咕咕了好久,来填坑了。 问题 求斐波那契数列在模 \(p\) 意义下的循环节 \(m\) 。 解法 首先知道 \(fib\) 通项公式为 \(f(n)=\frac{A^n-B^n}{\sqrt{5}}\) ,其中 \(A=\frac{1+\sqrt{5}}{2},B=\frac{1-\sqr ...
分类:
其他好文 时间:
2020-10-31 01:48:24
阅读次数:
16
The Oculus 问题描述: A=∑ai*F[i] B= ∑bi*F[i] C=A*B=∑ci*F[i] F[i]是斐波拉契序列,a[],b[],c[]是给的01数组。 由于故意将c[i]的一个数由1变成了0,现在改变的下标是 吐槽(没啥好讲的,知道循环节直接出) 这道题我真的我当时为什么不看啦 ...
分类:
其他好文 时间:
2020-07-24 22:08:30
阅读次数:
79
http://poj.org/problem?id=2406 http://poj.org/problem?id=1961 几乎是一个题 1961是对于第 \(i\) 位,求 \([1,i]\) 能不能由一段字符循环一次以上组成,输出 \(i\) 和这样的长度最小的循环节循环次数 2406是只对第 ...
分类:
其他好文 时间:
2020-07-17 13:49:40
阅读次数:
47
gate 一年前做的. 求一个字符串由多少个循环节构成. KMP. 结论:若$n % (n-next[n]) \not= 0$则不是由循环节构成的. 否则,答案为$n/(n-next[n])$. code #include<cstdio> #include<iostream> #include<cm ...
分类:
其他好文 时间:
2020-07-01 09:51:14
阅读次数:
65
题目链接:http://poj.org/problem?id=1961 通过next数组求字符串截止到i位置的最小循环节以及循环次数,可以在O(N)时间内得出,通过这个方法可以求得字符串的任意长度的循环节。 代码如下: #include<iostream> #include<cstdio> usin ...
分类:
编程语言 时间:
2020-06-17 18:07:49
阅读次数:
51
https://ac.nowcoder.com/acm/contest/5773/E 求使序列有序的最小交换次数。 找循环节的个数,最小交换次数等于元素个数减掉循环节的个数。 关于算法这里有个比较好的分析https://blog.csdn.net/lfb637/article/details/866 ...
分类:
其他好文 时间:
2020-05-25 22:15:28
阅读次数:
66
"传送门开启了传送门吃" $其实要发现只需要考虑[1,k]这个循环节$ $开始我们想让数字最小那么[1,k]就和目标串相等就好了$ $然后我们从目标串的k+1位开始判断$ $Ⅰ.若相等,无事发生,继续判断下一个字母$ $Ⅱ.若比目标串大,那么继续判断下去也一定大,break$ $Ⅲ.若比目标串小,那 ...
分类:
其他好文 时间:
2020-05-15 20:05:32
阅读次数:
71