SCOI2003 字串摺疊

2022-05-05 13:06:12 字數 1321 閱讀 6168

[scoi2003]字串摺疊

時間限制:c/c++

1秒,其他語言2秒

空間限制:c/c++

262144k,其他語言524288k

64bit io format:

%lld

摺疊的定義如下:

乙個字串可以看成它自身的摺疊。記作s = s x(s)是x(x>1)個s連線在一起的串的摺疊。記作x(s) = ssss…s(x個s)。

如果a = a』, b = b』,則ab = a』b』 例如,因為3(a) = aaa, 2(b) = bb,所以3(a)c2(b) =

aaacbb,而2(3(a)c)2(b) = aaacaaacbb

給乙個字串,求它的最短摺疊。例如aaaaaaaaaabababccd的最短摺疊為:9(a)3(ab)ccd。

輸入描述:

僅一行,即字串s,長度保證不超過100。

輸出描述:

僅一行,即最短的摺疊長度。

示例1

輸入

複製

neercyesyesyesneercyesyesyes
輸出

複製

14
菜。。。我太菜了

dp[l][r]表示l~r的最短摺疊長度

dp[l][r]=min(r-l+1,dp[l][k]+dp[k+1][r]) l<=k#include

using

namespace std;

const

int maxn=

140;

int dp[maxn]

[maxn]

;bool vis[maxn]

[maxn]

;char s[maxn]

;bool

check

(int l,

int r,

int cl,

int cr)

return

true;}

intcalc

(int x)

//x是幾位數

return ans;

}int

dfs(

int l,

int r)

}return dp[l]

[r];

}int

main()

SCOI2003 字串摺疊

摺疊的定義如下 乙個字串可以看成它自身的摺疊。記作s s x s 是x x 1 個s連線在一起的串的摺疊。記作x s ssss s x個s 如果a a b b 則ab a b 例如,因為3 a aaa,2 b bb,所以3 a c2 b aaacbb,而2 3 a c 2 b aaacaaacbb ...

SCOI2003 字串摺疊

題目傳送門 dp 的實現也要下一下功夫,比如這題,知道轉移方程卻不會實現 定義f i j 為區間 i,j 摺疊的最短長度 然後就是區間 dp 的套路,列舉中間斷點,然後轉移 如何判斷能否摺疊,以及摺疊後的處理沒有想到 還要多加練習 include include include include de...

SCOI2003 字串摺疊

摺疊的定義如下 乙個字串可以看成它自身的摺疊。記作s s x s 是x x 1 個s連線在一起的串的摺疊。記作x s ssss s x個s 如果a a b b 則ab a b 例如,因為3 a aaa,2 b bb,所以3 a c2 b aaacbb,而2 3 a c 2 b aaacaaacbb ...