1090 SCOI2003 字串摺疊

2021-08-29 20:44:25 字數 766 閱讀 5544

摺疊的定義如下: 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。

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

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

neercyesyesyesneercyesyesyes

乙個最短的摺疊為:2(neerc3(yes))

思路:f[i][j] 代表 i 到 j 之間的摺疊成最小的長度。 

首先我們要判斷是不是有摺疊的。 

如果有,判斷摺疊多少次,因為是有數字在裡面的。要計算數字的位數。 

如果不能摺疊,有列舉 k 的位置,然後用區間動規做出來。 

#includeusing namespace std;

char s[200];

int tot;

int f[200][200];

bool check(int x, int y,int z)

return 1;

}int main()

} }printf("%d\n",f[0][n-1]);

return 0;

}

1090 SCOI2003 字串摺疊

題目鏈結 題目大意 摺疊的定義如下 1.乙個字串可以看成它自身的摺疊。2.x s 是x x 1 個s連線在一起的串的摺疊,記作x s 3.摺疊可以巢狀。給乙個字串,求它的最短摺疊。題解 區間dp f l r 表示 l r 壓縮後最短長度,初始值f l r r l 1 轉移 列舉區間分割點k,l k ...

bzoj1090 SCOI2003 字串摺疊

time limit 10 sec memory limit 162 mb submit 1718 solved 1146 submit status discuss 摺疊的定義如下 1.乙個字串可以看成它自身的摺疊。記作s s 2.x s 是x x 1 個s連線在一起的串的摺疊。記作x s sss...

BZOJ1090 SCOI2003 字串摺疊

給出乙個字串,可以將相鄰的重複的子串合併在一起,如 abaaaabba,可以合併為ab4 a bba 注意,數字和括號均算作字元,數字有多少位就相當於有多少個字元 請問怎麼合併才能使字串的長度最小 也可以不合併 區間dp,本來想著會t,結果應該是不會詢問這麼多遍,所以耗時可觀 f i j 表示第i個...