UVa 1630 串折叠】的更多相关文章

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…
题目链接:https://uva.onlinejudge.org/external/16/1630.pdf 题意:折叠串,给一个字符串,相同部分可以折叠,折叠可以嵌套.求最短长度的一种折叠方法.括号和数字的长度也要考虑进去. 刚看到这个题目,没有一点思路,还是大牛们厉害! 分析:一个串,可以转成两种形式,要么本身可以转成有重叠部分的串,要么分成两个部分,再转成有重叠部分的串. 本身是否是重叠串,利用kmp查,分成两个部分,遍历一遍所有情况,这样,dp顺序就出来了,最外层是每次查的长度,第二层就是…
题意:给出一个由大写字母组成的长度为n(1<=n<=100)的串,“折叠”成一个尽量短的串.折叠可以嵌套.多解时可输出任意解. 分析: 1.dp[l][r]为l~r区间可折叠成的最短串的长度. 2.ans[l][r]为l~r区间可折叠成的最短串. 3.先判断当前研究的串是否能折叠,若不能折叠,再枚举分割线,折叠分隔后可折叠的串,以使处理后的串最短. #pragma comment(linker, "/STACK:102400000, 102400000") #include…
题意: 给你一串数字,要求你对其进行折叠使其长度最短. 折叠情况:全是一个字母 & 重复的字符串 AAAAAAAAAABABABCCD    -->   9(A)3(AB)CCD NEERCYESYESYESNEERCYESYESYES      -->       2(NEERC3(YES)) 思路: 用dp[i][j]表示从 i 到 j 的最短情况. 不停的往下找,得到 i 到 j 的字符串后,再判断能否折叠 大致思路如此,中间WR了一把,在将长度转换成字符型时直接用的 t + ‘…
题目 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.自己构成一个压缩串 对于第一种,枚举间断点; 对于第二种,看看最短的母串是什么,用最短的母串构造压缩; 看看间断…
题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作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 给一个字符串,求它的最短折叠.例如AAAAAAAAAABABABCCD的最短折叠为:9(A)3(AB)CCD. 输入输出格式…
Vim 神器的打造方式     [字体:大 中 小]   Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享一个前端工作者不得不安装的一些插件,而关于 Vim 的简介,主题的选择,以及为何使用 vim-plug 来管理插件等内容,有兴趣的同学下来可以自己了解和对比下. 安装 sudo apt-get install vim // Ubuntu 其他平台,可以自行谷歌. 新手指南 vimtutor // vim 教程 上面是史上最简单,最…