1. 程式人生 > >【Atcoder Grand Contest 020 E】 Encoding Subsets

【Atcoder Grand Contest 020 E】 Encoding Subsets

odi class 次數 -c time coder 答案 Coding 取模

Atcoder Grand Contest 020 E

題意:給一個\(0-1\)字符串,如果其中有一段重復,就可以表示成\((\)這一塊的表示\(\times\)出現次數\()\)

問這個字符串的所有子集中有多少種表示方法。

思路:考慮\(dp(s)\)表示字符串\(s\)的答案。

那麽我們得考慮第一個表示成的位置是什麽。

①第一位就是表示的第一位,不參與循環。那麽轉移到\(dp(s.substr(1))\),並且如果這位是\(1\),那麽乘上\(2\),因為這位可能是\(0\)

②一個前綴是循環節。那麽轉移到這個循環節的答案乘上後面的那一段的答案。這個循環節是它循環的內容中所有段的\(and\)

,即按位與。

然後記得取模就好了。

【Atcoder Grand Contest 020 E】 Encoding Subsets