首页 > TAG信息列表 > SCOI2003

P4302 [SCOI2003]字符串折叠 题解

[SCOI2003]字符串折叠 一道比较普通的 区间DP 题。 题意:定义了折叠操作,如 \(\texttt{ABCABC}\) 可折叠为 \(\texttt{2(ABC)}\),也可以嵌套折叠。注意:字符串中两位数是算两个数位。问折叠操作后最小的字符串长度。 首先,题目意思很清楚,而且如果不算折叠就是输出字符串原长,折叠这个操

【P4302 [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 给一个字

P4302 [SCOI2003]字符串折叠

对于字符串的区间dp 寻找叠加后的最小值 其中叠加转化后的括号和数字均算为字符串长度 唯一的难度就是去想到怎样判断字符串是否可以折叠 我们可以只判断一个区间中整个字符串是否可以完全折叠为一个 其他的直接相加即可 题目链接 题目思路 我们用f[i][j]来表示从i到j处理后

[SCOI2003]字符串折叠

[SCOI2003]字符串折叠 区间 \(DP\) , 设 \(f[i][j]\) 表示区间 \((i, j)\) 的最短折叠长度, 然后枚举 \(k \in (i, j)\) , 判断 \((i, k)\) 是否是 \((i, j)\) 的一个循环节, 是就取 \(f[i][j] = \min (f[i][j], f[i][k] + 2 + num[(j - i + 1) / (k - i + 1)])\) , \(num[i]\) 表

[SCOI2003]字符串折叠

IV.[SCOI2003]字符串折叠 一眼区间DP。 设\(f[i][j]\)表示:将区间\([i,j]\)内的所有东西压一起的最短长度。 显然,有两种方法: 1.在中间一刀劈开,然后拼一起。 2.找到它的循环节,然后把整个串压一起。 至于找循环节吗……枚举循环节长度,然后无脑哈希一下。 注意,你可能会压出类似于\(10(

SCOI2003 字符串折叠

题目传送门 \(DP\)的实现也要下一下功夫,比如这题,知道转移方程却不会实现 定义f[i][j]为区间\([i,j]\)折叠的最短长度 然后就是区间\(DP\)的套路,枚举中间断点,然后转移 如何判断能否折叠,以及折叠后的处理没有想到 还要多加练习 #include <iostream> #include <cstdio> #include <cs

luogu P4302 [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 <iostream> #include <cstdio> #include <cst

P4302 [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 给一个字符串,求