字串摺疊
time limit:10009ms memory limit:65536k
total submit:4 accepted:0
case time limit:1000ms
description
摺疊的定義如下:
1. 乙個字串可以看成它自身的摺疊。記作s =s
2. x(s)是x(x>1)個s連線在一起的串的摺疊。記作x(s) = ssss…s(x個s)。
3. 如果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。
input
僅一行,即字串s,長度保證不超過100。
output
僅一行,即最短的摺疊長度
sample input
neercyesyesyesneercyesyesyessample output
14source
hzoi
區間動規,f[i][j]表示i~j區間內能夠達到的最小長度
f[i][j]=mini<=k如果k+1~j能夠摺疊成i~k,那麼有如下轉移方式
f[i][j]=mingetcnt是計算十進位制位數的函式
#include#include#include#includeusing namespace std;
const int maxn=105,inf=1e9;
char s[maxn];
int n,f[maxn][maxn];
bool ok(int l1,int r1,int l2,int r2)
int getcnt(int x)
int main()
cout<
bzoj1090 字串摺疊
問題描述 摺疊的定義如下 1.乙個字串可以看成它自身的摺疊。記作s s 2.x s 是x x 1 個s連線在一起的串的摺疊。記作x s ssss s x個s 3.如果a a b b 則ab a b 例如,因為3 a aaa,2 b bb,所以3 a c2 b aaacbb,而2 3 a c 2 b ...
SCOI2003 字串摺疊
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...
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 ...