ACdream HUT新生摸底训练赛 D - 娜娜梦游仙境系列——村民的怪癖 KMP

解题思路:用next数组进行跳转次数统计。

解题代码:

 1 // File Name: d.cpp
 2 // Author: darkdream
 3 // Created Time: 2015年04月12日 星期日 19时40分52秒
 4
 5 #include<vector>
 6 #include<list>
 7 #include<map>
 8 #include<set>
 9 #include<deque>
10 #include<stack>
11 #include<bitset>
12 #include<algorithm>
13 #include<functional>
14 #include<numeric>
15 #include<utility>
16 #include<sstream>
17 #include<iostream>
18 #include<iomanip>
19 #include<cstdio>
20 #include<cmath>
21 #include<cstdlib>
22 #include<cstring>
23 #include<ctime>
24 #define LL long long
25
26 using namespace std;
27 int n ;
28 int t;
29 char str[300000];
30 int len ;
31 int next[300000];
32 void get_next()
33 {
34     next[0] = -1;
35     int k = -1;
36     int j =0 ;
37     while(j < len )
38     {
39       if(k == -1 || str[j] == str[k])
40       {
41          ++ k ;
42          ++ j ;
43          next[j] = k ;
44       }else{
45          k = next[k];
46       }
47     }
48 }
49 int find(int x)
50 {
51    if(x == 0)
52        return 0;
53    return 1+find(next[x]);
54 }
55 int main(){
56     scanf("%d",&t);
57     while(t--)
58     {
59       scanf("%s",str);
60       len = strlen(str);
61       scanf("%s",&str[len]);
62       len = strlen(str);
63       get_next();
64       printf("%d\n",find(len));
65     }
66 return 0;
67 }

时间: 2024-10-04 03:38:47

ACdream HUT新生摸底训练赛 D - 娜娜梦游仙境系列——村民的怪癖 KMP的相关文章

ACdream HUT新生摸底训练赛 E - 娜娜梦游仙境系列——莫名其妙的插曲 数论

解题思路:其实就是找能组成的最大集合.max(a[1],a[2],a[3].........a[n])/gcd(a[1],a[2],a[3],......a[n]) 解题代码: 1 // File Name: e.cpp 2 // Author: darkdream 3 // Created Time: 2015年04月13日 星期一 13时56分11秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #i

ACdream HUT新生摸底训练赛 C 娜娜梦游仙境系列——吃不完的糖果 DP

解题思路:环形数组最大字串,穿过和不穿过的DP 解题代码: 1 // File Name: c.cpp 2 // Author: darkdream 3 // Created Time: 2015年04月12日 星期日 19时52分24秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include<st

ACdream HUT新生摸底训练赛 B - 娜娜梦游仙境系列——跳远女王 bfs

题意:bfs 解题思路:建图bfs,要特判一下能否直接跳. 解题思路: 1 // File Name: b.cpp 2 // Author: darkdream 3 // Created Time: 2015年04月12日 星期日 20时03分02秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include

ACdream HUT新生摸底训练赛 F - 娜娜梦游仙境系列——多民族王国 并查集

解题思路:并查集水题,多年前曾经用暴力水过. 解题代码: 1 // File Name: c.c 2 // Author: darkdream 3 // Created Time: 2013年03月01日 星期五 00时37分28秒 4 5 #include<stdio.h> 6 #include<string.h> 7 #include<stdlib.h> 8 #include<time.h> 9 #include<math.h> 10 11

D - 娜娜梦游仙境系列——村民的怪癖

D - 娜娜梦游仙境系列——村民的怪癖 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 娜娜费劲九牛二虎之力终于把糖果吃完了(说好的吃不完呢?骗人,口亨~),于是,缘溪行,忘路之远近.忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷,娜娜甚异之.复前行,欲穷其林.林尽水源,便得一山,山有小口,仿佛若有光.便

A - 娜娜梦游仙境系列——诡异的钢琴

A - 娜娜梦游仙境系列——诡异的钢琴 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 从前,有一个ACdream王国,王国里住着一位公主,她叫娜娜,娜娜公主有一天做了一个很长很长的梦~她说她从来没有遇到过这些奇妙的东西~ 现在站在娜娜面前的是一台钢琴,这是一台看上去很正常的钢琴,上面有88个键(频率从27赫兹

E - 娜娜梦游仙境系列——莫名其妙的插曲

E - 娜娜梦游仙境系列——莫名其妙的插曲 E - 娜娜梦游仙境系列——莫名其妙的插曲 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Problem Description 娜 娜因为帮桃花村民们解决了一大难题而受到村民们的尊敬,不过由于娜娜还想继续探索这个神奇的世界,只好恋恋不舍地与村民告别.当娜娜离开村庄的一刻,娜娜 失忆了!她不记得桃花村的一切,她不记得之前吃了很多糖果

G - 娜娜梦游仙境系列——梦醒

G - 娜娜梦游仙境系列——梦醒 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others)     Special Judge Submit Status Problem Description 娜娜离开了这个王国,走向远方,在旷野上,娜娜看到了一个大时钟,上面的时针分针秒针都在缓缓转动,那只挥着翅膀的天使又出现了,天使说:“外面天已经亮了,娜娜你别睡过头哟~”,娜娜问:“我怎样才能醒过

F - 娜娜梦游仙境系列——多民族王国

F - 娜娜梦游仙境系列——多民族王国 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) Submit Status Problem Description 娜娜好不容易才回忆起自己是娜娜而不是什么Alice,也回忆起了自己要继续探索这个世界的目标,便偷偷溜出皇宫.娜娜发现这个王国有很多个民族组成,每个民族都有自己的方言,更要命的是这些方面差别还很远,这就导致这个王国的人民交流十