Folding UVA - 1630】的更多相关文章

题目 ans[i][j]表示由原串第i个字符到第j个字符组成的子串的最短折叠长度如果从i到j本身可以折叠,长度就是本身长度或折叠后的长度的最小值***此处参考:http://blog.csdn.net/a197p/article/details/48701227(自己只能想到去掉左边或右边字母,这样难以转移状态)如果不能,就是将其分成两个子串后子串连接起来长度的最小值(如果比本身长度还大则取本身)如果能折叠的显然一定是折叠比分成两段好,当然如果不确定可以折叠.不折叠都试一下,然后取长度最小值 #…
题意:折叠一个字符串,使得其成为一个尽量短的字符串  例如AAAAAA变成6(A) 而且这个折叠是可以嵌套的,例如 NEEEEERYESYESYESNEEEEERYESYESYES 会变成 2(N5(E)R3(YES)). 析:用dp[i][j] 表示字符串中的第 i 个到第 j 个字符压缩后的最短长度.那么就有两种方式,一种就是自身压缩都最短,另一种就是两段分别压缩, 然后再接起来最短. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024…
一个字符串如果能简写,要么是重复多次,按题中的要求简写:要么是左右两个部分分别简写后再拼起来. dp(i, j)表示字串(i, j)所能被简写的最短的字符串. 判断一个字符串是否为周期串以及求出它的周期用的KMP算法. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <string> using namespace std…
[Link]: [Description] 你能对字符串进行压缩的操作; 即把连续出现的相同的子串改成它出现的次数+这个最基本的字符串的形式; 问你这个字符串最短能被压缩得多短; [Solution] 设f[i][j]表示,i..j这一段最短能压缩得多短; d[i][j]表示i..j这一段最短的形式压缩成的字符串是什么; 对于一段i..j 有两种可能 1.是两个压缩串合并起来的; 2.自己构成一个压缩串 对于第一种,枚举间断点; 对于第二种,看看最短的母串是什么,用最短的母串构造压缩; 看看间断…
题意:给出一个由大写字母组成的长度为n(1<=n<=100)的串,“折叠”成一个尽量短的串.折叠可以嵌套.多解时可输出任意解. 分析: 1.dp[l][r]为l~r区间可折叠成的最短串的长度. 2.ans[l][r]为l~r区间可折叠成的最短串. 3.先判断当前研究的串是否能折叠,若不能折叠,再枚举分割线,折叠分隔后可折叠的串,以使处理后的串最短. #pragma comment(linker, "/STACK:102400000, 102400000") #include…
题目链接:https://uva.onlinejudge.org/external/16/1630.pdf 题意:折叠串,给一个字符串,相同部分可以折叠,折叠可以嵌套.求最短长度的一种折叠方法.括号和数字的长度也要考虑进去. 刚看到这个题目,没有一点思路,还是大牛们厉害! 分析:一个串,可以转成两种形式,要么本身可以转成有重叠部分的串,要么分成两个部分,再转成有重叠部分的串. 本身是否是重叠串,利用kmp查,分成两个部分,遍历一遍所有情况,这样,dp顺序就出来了,最外层是每次查的长度,第二层就是…
题意: 给你一串数字,要求你对其进行折叠使其长度最短. 折叠情况:全是一个字母 & 重复的字符串 AAAAAAAAAABABABCCD    -->   9(A)3(AB)CCD NEERCYESYESYESNEERCYESYESYES      -->       2(NEERC3(YES)) 思路: 用dp[i][j]表示从 i 到 j 的最短情况. 不停的往下找,得到 i 到 j 的字符串后,再判断能否折叠 大致思路如此,中间WR了一把,在将长度转换成字符型时直接用的 t + ‘…
https://vjudge.net/problem/UVA-1630 题意: 给出一个由大写字母组成的长度为n的串,折叠成一个尽量短的串.例如:AAAAAAAAABABABCCD折叠成9(A)3(AB)CCD. 思路: 参考自http://blog.csdn.net/a197p/article/details/48701227.自己实在是没什么思路,也是看了很久才搞明白. DP[i][j]表示的是 i~j 压缩后的长度. fold[i][j]存储 i~j 压缩后的状态. #include<io…
题目:题目链接 思路:1到4是很容易写出来的,我们先考虑这四种情况的绘制顺序 1:ru 2:rulu 3:rululdlu 4:rululdluldrdldlu 不难发现,相较于前一行,每一次增加一倍数量,并且增加的这部分前一半和原来正好相反,后一半相同,根据这一性质,预处理出极端情况13的解答字符串,然后绘制即可,注意控制行尾空格 AC代码: #include <iostream> #include <cstdio> #include <cstring> #inclu…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4378 写了这么长不容易纪念一下 /********************* Template ************************/ #include <set> #include <map> #include <list> #include…