1. 程式人生 > >P2375 [NOI2014]動物園

P2375 [NOI2014]動物園

order 後綴 kmp 不能 一個數 怎麽 動物 復雜 noi2014

考慮kmp。
這個題的主要問題就在於怎樣使復雜度是正確的O(n)。
可以先預處理一個數組cnt[]表示不考慮不能相交這個限制,有多少個border。
這個東西其實也就是fail樹上的深度。
然後考慮怎麽算num,直接暴力跳到長度<=i/2為止,第一合法個位置的cnt就是答案。
這樣做復雜度依然是均攤O(n)的,因為j每次最多+1。

考慮Z-box。
求出每個後綴和原串的lcp後。
枚舉每一個合法後綴的左端點在什麽地方。
然後這個後綴會對長度為min(i,lcp(suf))產生一個貢獻,取min那一步是為了不能相交。

P2375 [NOI2014]動物園