
数据结构_Kmp
just_sort
Acdream.
展开
-
Xtreme9.0 - Pattern 3 KMP裸题
题目链接:https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/pattern-3/submissions/code/1301226664 题意:求字符串的最小循环节。 解法:KMP裸题,思想在训练指南P211-P214//Hacker Rank Pattern 3#include <bits/stdc++.h>原创 2017-04-05 16:04:57 · 771 阅读 · 0 评论 -
BZOJ 1355: [Baltic2009]Radio Transmission KMP
Description 给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. Input 第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成. Output 输出最短的长度 Sample Input 8cabcabca Sample Output 3 HINT对于样例,我原创 2017-04-25 21:14:50 · 582 阅读 · 0 评论 -
BZOJ 1461: 字符串的匹配 kmp套树状数组
解法:这题就是kmp匹配过程中用树状数组维护每个数字出现的次数,快速查询在前面比自己小的和等于自己的来判断是否能向后匹配///BZOJ 1461///KMP + BIT#include <bits/stdc++.h>using namespace std;const int maxn = 500010;const int maxs = 10010;int n, k, s;int a[ma原创 2017-05-04 20:42:09 · 1371 阅读 · 0 评论 -
Codeforces Beta Round #4 (Div. 2 Only) C. Registration system hash
题目链接:http://codeforces.com/problemset/problem/4/C题意:如果这个词第一次出现,输出ok否则输出这个词,并且输出在此之前这个词出现了多少次解法:直接双Hash//UVALive 6959#include <bits/stdc++.h>using namespace std;typedef long long LL;int gethash1(char原创 2017-04-06 13:16:19 · 504 阅读 · 0 评论 -
【NOI2014】动物园 kmp
题目链接: http://uoj.ac/problem/5题意: 中文题目解法: 如果num数组记载的前后缀允许重叠,是可以在递推next数组时顺路O(L)求出来的,这一步还算比较简单。 重点在于如何通过这个允许重叠的num数组求出不允许重叠时对应的num值。方法是让整个串再自己匹配自己一次,不过每次匹配时,如果j+1>(i+1)/2,即发现有重叠时,也要沿着next走。如果匹配成功,即str[原创 2017-04-06 11:43:32 · 532 阅读 · 0 评论 -
UESTC 1091 秋实大哥の恋爱物语
题目链接:http://acm.uestc.edu.cn/#/problem/show/1091题意:中文题目解法:KMPTrick: 用memset会挂//UESTC 1091#include <bits/stdc++.h>using namespace std;const int maxn = 2000010;int a[maxn], b[maxn], c[maxn], d[maxn], f原创 2017-04-06 10:59:51 · 400 阅读 · 0 评论 -
UESTC 1065 全都是秋实大哥 kmp
题目链接:http://acm.uestc.edu.cn/#/problem/show/1065题意: 中文题目解法:理解KMP里面的next之后,就是水题了。//UESTC 1065#include <bits/stdc++.h>using namespace std;const int maxn = 3e6+10;char s[maxn];int fail[maxn];int main()原创 2017-04-06 10:41:31 · 720 阅读 · 0 评论 -
poj 2406 Power Strings KMP
题目链接:http://poj.org/problem?id=2406题意:找最小循环节的循环次数解法:KMP//POJ 2406#include <stdio.h>#include <string.h>const int maxn = 4000010;char s[maxn];int fail[maxn];int main(){ while(scanf("%s", s+1) !=原创 2017-04-06 10:26:06 · 488 阅读 · 0 评论 -
Codeforces Beta Round #8 A. Train and Peter KMP
题目链接:http://codeforces.com/contest/8/problem/A 题意:给了一个文本串,然后现在有两个模式串,问这两个模式串能否正向和反向匹配。 解法:kmp粘粘粘。//CF 8A#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+7;char s[maxn], s1[maxn], s2原创 2017-04-05 16:42:43 · 532 阅读 · 0 评论 -
美团CODEM 字串
时间限制:1秒 空间限制:32768K 给出一个正整数n,我们把1..n在k进制下的表示连起来记为s(n,k),例如s(16,16)=123456789ABCDEF10, s(5,2)=11011100101。现在对于给定的n和字符串t,我们想知道是否存在一个k(2 ≤ k ≤ 16),使得t是s(n,k)的子串。 输入描述: 第一行一个整数n(1 ≤ n ≤ 50,000)。 第二行一个原创 2017-06-30 16:57:33 · 732 阅读 · 0 评论