【POJ2406】——Power Strings(KMP 最小迴圈節)
傳送門
最小迴圈節應該不需要講了吧
就是 KMP中 n−nxt[n]
考慮到 nxt陣列的定義,也就是說 ch[1−nxt[n]]和ch[(n−len[n])−n]是相等的
然後一塊塊向前推就是了
數量就是總長/長度
但注意必須是嚴格最小迴圈節
所以如果除不盡就是1
#include<bits/stdc++.h>
using namespace std;
char b[1000005];
int nxt[1000005];
int main(){
while(1){
scanf("%s",b+1);
int n=strlen(b+1);
if(n==1&&b[1]=='.')break;
for(int i=2,j=0;i<=n;i++){
while(j>0&&b[j+1]!=b[i])j=nxt[j];
if(b[i]==b[j+1])j++;
nxt[i]=j;
}
if(n%(n-nxt[n]))cout<<1<<'\n';
else cout<<n/(n-nxt[n])<<'\n';
}
}
相關推薦
【POJ2406】——Power Strings(KMP 最小迴圈節)
傳送門 最小迴圈節應該不需要講了吧 就是 K M P
【POJ2406】Power Strings 中文題意&題解&程式碼(C++)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Description Given two strings a and b we define a*b to be their conca
2406】Power Strings (KMP,最小迴圈節)
題幹: 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 = "abcdef". If we
【poj2406】Power Strings——KMP
題目: Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 41220 Accepted: 17140 Description Given two strings a
poj 2406 Power Strings(KMP求迴圈次數)
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 = "ab
POJ:2406-Power Strings(尋找字串迴圈節)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Description Given two strings a and b we define a*b to be their con
poj2406--Power Strings(KMP求最小迴圈節)
Power Strings Time Limit:3000MS Memory Limit:65536K Total Submissions:33178 Accepted:13792 Description Given two strings a and b we d
POJ-2406 Power Strings(KMP求重複子串出現的最大次數)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 50744 Accepted: 21173 Description Given two strings a an
「UVA10298」 Power Strings(KMP
length 如果能 href uva -a 一個 png cin stream 題目描述 PDF 輸入輸出格式 輸入格式: 輸出格式: 輸入輸出樣例 輸入樣例#1: 復制 abcd aaaa ababab . 輸出樣
FZU 1011 Power Strings(KMP匹配演算法)
Problem 1011 Power Strings Accept: 914 Submit: 2751 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description Giv
Power Strings (KMP)
#include<stdio.h> #include <string.h> #define maxn 1000010 char a[maxn]; int nxt[maxn]; int len; void getnxt() { int i=1,j=0;
【linux】tar.gz(bz或bz2等)結尾的源代碼包
wrap shel ade 過程 sta read inux 目錄 壓縮 這種軟件包裏面都是源程序,沒有編譯過,需要編譯後才能安裝 1、打開一個SHELL,即終端 2、用CD 命令進入源代碼壓縮包所在的目錄 3、根據壓縮包類型解壓縮文件(*代表壓縮包名稱) tar -
【BZOJ4199】【NOI2015】品酒大會(後綴數組)
可能 urn update cnblogs merge pri 需要 can 更新 【BZOJ4199】【NOI2015】品酒大會 題面 BZOJ Uoj 洛谷 題解 考慮最裸的暴力 枚舉每次的長度 以及兩個開始的位置 檢查以下是否滿足條件,如果可以直接更新答案 復雜度\(
【BZOJ3992】序列統計(動態規劃,NTT)
swap int 乘法 true ble spa main 們的 oid 【BZOJ3992】序列統計(動態規劃,NTT) 題面 BZOJ 題解 最裸的暴力 設\(f[i][j]\)表示前\(i\)個數,積在膜意義下是\(j\)的方案數 轉移的話,每次枚舉一個數,直接丟進去
【NOIP2012P】尋寶(於2018.2.12)
神題 整數 blog get 簡單 tail num 編號 syn 問題描述 藏寶樓共有N+1層,最上面一層是頂層,頂層有一個房間裏面藏著寶藏。除了頂層外,藏寶樓另有N層,每層M個房間,這M個房間圍成一圈並按逆時針方向依次編號為0,…,M-1。其中一些房間有通往上一層的
P2483 【模板】k短路([SDOI2010]魔法豬學院)
整數 ued style queue class 之前 一行 sta 結束 題目描述 iPig在假期來到了傳說中的魔法豬學院,開始為期兩個月的魔法豬訓練。經過了一周理論知識和一周基本魔法的學習之後,iPig對豬世界的世界本原有了很多的了解:眾所周知,世界是由元素構成的;元素
【Bzoj4289】PA2012 Tax(Dijkstra+技巧建圖)
down getc cmp priority 無向圖 mes post 起點 con Description 給出一個N個點M條邊的無向圖,經過一個點的代價是進入和離開這個點的兩條邊的邊權的較大值,求從起點1到點N的最小代價。起點的代價是離開起點的邊的邊權,終點的代價是進入
【CodeForces954G】Castle Defense(二分答案+差分)
getc AD set urn char class pos ref ++i Description 題目鏈接 Solution 二分答案,套一個差分標記即可 每次放弓箭手顯然越右邊越優 Code #include <cstdio> #include <a
【Bzoj3252】攻略(dfs序+線段樹)
esc long modify down 影響 link truct etc tchar Description 題目鏈接 Solution 可以想到,每次肯定是拿最大價值為最優 考慮改變樹上一個點的值,只會影響它的子樹,也就是dfs序上的一個區間, 於是可以以dfs序建線
【BZOJ1023】仙人掌圖(仙人掌,動態規劃)
轉移 tps 同時 HR code main 最大值 mes vector 【BZOJ1023】仙人掌圖(仙人掌,動態規劃) 題面 BZOJ 求仙人掌的直徑(兩點之間最短路徑最大值) 題解 一開始看錯題了,以為是求仙人掌中的最長路徑。。。 後來發現看錯題了一下就改過來了。。