poj1795
2015-06-26 16:31
183 查看
题目描述:
用长度最短的的字符串来使得可以覆盖已经给出的字符,加一个为开头状态。一共有15个字符串,每个串长度<=200题解:
字符串拼接,实际上就是可能有相邻字符串有重复的可以不再弄.重复的多一点就变成了包含.本来是15!的复杂度.但是我们发现其实出去最后一个串,那么我们再接上最后一个串的代价其实之和前面串的最后一个串有关(先叉一下:要想这样做,设i后面接j,那么j绝对不能把i给吃了,这样就会涉及到i之前的了,但是我们想想,i在前,j把i吃了,就是i真包含在j里面,因此我们需要特殊的预处理:如果a包含在b内,那么a就不要了.我们的dp中不能出现a.).这样想似乎可以dp了,怎么写可以搞乱顺序呢?发现用状压竟然可以描述:dp[sta][i],搞完sta并且最后一个是i的花费值.从sta=0开始更新.真是巧妙,一个本身根顺序有关的被变成了用sta来指明路.特别的,这道题要我们输出字典序最小的….那么我们就一直往前添加字符串就好了呗.最后枚举第一个字符串是谁
重点:
用状压+最后一个来描述一个顺序不确定的dp.代码:
相关文章推荐
- 《高效能人士的七个习惯》--读书笔记
- Length of Last Word
- java对cookie的操作
- 联机重做日志文件 (转)
- 从零开始--系统深入学习IOS(使用Swift---带链接)
- MyEclipse 8.6 安装Mylyn插件详细步骤
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/
- richedit插入图片错误
- xterm run command
- 渣渣ACM日记——540-奇怪的排序(NYOJ)
- 剖析一个java对象初始化顺序问题
- 当Fragment通过ViewPager嵌套Fragment时第二进入不显示的问题
- 正则表达式
- ssh学习路线
- 关于listview的一些属性
- Winform菜单之ContextMenuStrip
- Windows 10最新预览版10154曝光 接近99%的正式版
- postgresql 异步流复制
- js contains方法
- eclipse中 Perspective switch job 弹框问题