摺疊的定義如下: 1. 乙個字串可以看成它自身的摺疊。記作s s 2. x(s)是x(x>1)個s連線在一起的串的摺疊。記作x(s) ssss…s(x個s)。 3. 如果a a』, bb』,則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個...