[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 ...