KMP
swqeaaa
有问题可以吻我
展开
-
【KMP】【CodeForces】contest 1016 B Segment Occurrences
【题目】http://codeforces.com/contest/1016/problem/B【题意】给定两个字符串,若干次询问,问在询问区间内,a中有多少个b【思路】KMP【模板】https://www.cnblogs.com/chenxiwenruo/p/3546457.html【代码】#include<bits/stdc++.h>int next[...原创 2018-08-05 09:16:38 · 352 阅读 · 0 评论 -
【CodeForces】【暴力】798 B Mike and strings
【题目】http://codeforces.com/problemset/problem/798/B【题意】给出n个字符串,长度相同,有1种操作:将第一个字符放到最后,问最少需要操作多少次能使得这n个字符串变得相同?【思路】 ->遍历每个串,让第i个字符串当作目标串,看剩下的串变成这个串需要多少总代价 ->将其他的...原创 2018-08-21 17:37:38 · 319 阅读 · 0 评论 -
CodeForces 1162 D Chladni Figure 字符串
插眼题意: 一个圆的边上平均放置了n个点, 这n个点连接了m条边, 问这个图形能不能顺时针旋转(0°,360°)得到相同的图形.思路: 哈希的思想, 每个点都有自己的属性, 相隔x距离的另一个点给点a一条边就是a的一个属性, 把每个点的这些属性哈希成一个值, 所有点的值就会构成一个数组. 那么这个问题就变成能不能从2倍的这个数组中找到2次以上的它本身.(第一次是0°,第二次是360°,再有...原创 2019-05-11 11:38:24 · 364 阅读 · 0 评论 -
KMP的一些总结
小结论:nxt[x]表示前0~x-1位存在的最长前缀=后缀的长度.一个字符串长度为m, 那么最小循环节长度为m-nxt[m]s串任意前缀的nxt数组就是s串的nxt数组, 直接用就行了kmp的小技巧:① 如果只看s中有没有t,kmp()循环加上当j==m时break的条件.② 如果求出现次数, 要去掉①中的条件, 并每当j==m(匹配成功)时, 把j赋为nxt[j]③ ...原创 2019-07-17 11:25:20 · 150 阅读 · 0 评论 -
HDU 3336 Count the string kmp 递推dp
题意: 每个前缀出现次数的和.思路: cnt[pos]记录第pos个前缀x在比他长的前缀y中出现的次数,递推式:定义原串的前缀为x类串.每个长度为a的x类串s会包含2个长度为nxt[a]的x类串t, 而两个相邻的s会有一个重复的t, 所以cnt[a]个s会有cnt[a]+1个t.最后答案加上每个前缀本身共m. 具体见代码.#include <iostream>...原创 2019-07-17 11:28:06 · 151 阅读 · 0 评论