码迷,mamicode.com
首页 > 其他好文 > 详细

第二周 9.6-9.12

时间:2015-09-06 23:02:05      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:

9.6

FZU 1901 Period II

并不需要完整的周期。即最后一段可以不完整。

所以直接沿Next往后找就可以了。

行末不能有空格不然PE。

技术分享
 1 # include <iostream>
 2 # include <cstdio>
 3 # include <cstring>
 4 # include <vector>
 5 using namespace std;
 6 int m,Next[1000100];
 7 char b[1000100];
 8 
 9 void getNext(void)
10 {        
11     Next[0]=Next[1]=0;
12     for(int i=1;i<m;i++)
13     {
14         int j=Next[i];
15         while(j&&b[i]!=b[j]) j=Next[j];
16         Next[i+1]=b[i]==b[j]?j+1:0;    
17     }
18     return;
19 }
20 
21 int main(void)
22 {
23     int T; cin>>T;
24     for(int kase=1;kase<=T;kase++)
25     {
26         scanf("%s",b);
27         m=strlen(b);
28         getNext();
29         vector<int> ans;
30         int pos=m;
31         while(pos)
32         {
33             pos=Next[pos];
34             ans.push_back(pos);
35         }
36         printf("Case #%d: %d\n",kase,ans.size());
37         for(int i=0;i<ans.size()-1;i++) printf("%d ",m-ans[i]);
38         printf("%d\n",m-ans[ans.size()-1]);
39     }
40     return 0;
41 }
Aguin

 

第二周 9.6-9.12

标签:

原文地址:http://www.cnblogs.com/Aguin/p/4787523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!