學習筆記 NOIP 字串

2022-09-19 04:51:11 字數 782 閱讀 9811

題目鏈結

考慮預處理出所有回文半徑為 \(i\) 的回文串個數 \(cnt_i\) ,manacher 時進行乙個字首加,差分 + 字首和處理即可。

**記錄

題目鏈結

回文串計數。

核心思想:

**記錄

題目鏈結

考慮回文串 \(s^*\) 的回文重心 \(pos\) ,其在 \(s\) 中的回文半徑一定能將其延伸到 \(s\) 最後乙個位置。

那麼問題等價於找到回文半徑延伸到 \(s\) 最後乙個位置最靠前的位置。

manacher 即可。

**記錄

題目鏈結

如果只能翻一次那麼就是上面那道題的弱化版。

根據上一題的經驗,可以在 \(o(n)\) 的時間內預處理出所有翻一次可能的長度。

考慮乙個長度 \(m\) 如果長度為 \(m\) 的串可以經過翻若干次使得 \(s\) 是 \(r\) 的字首,那麼以第 \(m\) 位的回文中心的最長回文半徑如果伸不到最後乙個位置,那麼一定要能夠伸到第乙個位置,並且回文重心對應的右邊的位置應該也是乙個合法位置。

那麼這樣我們就可以倒著處理出所有合法的位置從而處理出所有合法的長度。

**記錄

可以用 kmp 在 \(o(n)\) 的時間內求出字串 \(s\) 所有字首的 border 從後暴力往前跳。

週期:對於字串 \(s\) 與正整數 \(p\) 若 \(\forall i+p\le |s|\),有 \(s[i]=s[i+p]\) 稱 \(p\) 是 \(s\) 的週期。

若 \(p|n\) 稱其為整週期

字串 學習筆記

這篇部落格只是記錄一下我在做題過程中碰到的一些關於字串巧妙的處理方式 可能只對我這個菜雞來說相對巧妙吧 1 stringstream的使用 第一次碰到stringstream的使用是在紫書上面p112,題目是uva10815。前幾天補字串的題目的時候在 洛谷p1308統計單詞數 也碰到了一題可以使用...

NOIP學習之字串 71 驗證子串

測試鏈結 總時間限制 1000ms 記憶體限制 65536kb 描述 輸入兩個字串,驗證其中乙個串是否為另乙個串的子串。輸入 輸入兩個字串,每個字串佔一行,長度不超過200且不含空格。輸出 若第乙個串s1是第二個串s2的子串,則輸出 s1 is substring of s2 否則,若第二個串s2是...

NOIP學習之字串 133 字串判等

測試鏈結 總時間限制 1000ms 記憶體限制 65536kb 描述 判斷兩個由大小寫字母和空格組成的字串在忽略大小寫,且忽略空格後是否相等。輸入 兩行,每行包含乙個字串。輸出 若兩個字串相等,輸出yes,否則輸出no。樣例輸入 a a bb bb ccc ccc aa bbbb cccccc 樣例...