fzu2172 字符串dp
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
大师兄在取经途中迷上了ACM-ICPC,稍不留神,师傅就被妖怪抓走了。
大师兄并不着急去救师傅,在虐这道简单题:
有两个字符串A和B,每一次可以选择以下操作中的一种,只对字符串A进行操作,用最少的操作使得字符串A与字符串B相等:
在字符串A中插入一个字符;
在字符串A中删除一个字符;
将字符串A复制,得到字符串A的一个拷贝C,将字符串C接在字符串A后面。
Input
每组输入数据包含两行,第一个一个字符串A,第二行一个字符串B。输入字符串最大长度为10。
如果最少操作次数大于15,则输出”more than 15 operations.”。
Output
对每组输入数据,输出最少的操作次数,使得字符串A与字符串B相等。
Sample Input
Sample Output
dp[i][j] 可能由dp[i-1][j],dp[i][j-1],dp[i-1][j-1],dp[i/2][j],dp[i/2][j/2],dp[i][j/2] 推过来
dp[i-1][j] a中前i-1个已经与b中前j个相同,那么需要把a中第i个字符删掉 所以dp[i][j]=dp[i-1][j]+1
dp[i][j-1] a中前i个已经与b中前j-1个相同,那么需要在a的后面添加一个b中的第j个字符 dp[i][j]=dp[i][j-1]+1
dp[i-1][j-1] 这是要看a[i]以及b[j],如果这两个相同,显然dp[i][j]=dp[i-1][j-1],如果不同的话首先b不能变,只能把a的第i个删掉然后在a的后面添加一个b[j];这样dp[i][j]=dp[i-1][j-1]+2
dp[i/2][j] 无意义,应为规则中只能改变a串
dp[i/2][j/2] 同上
dp[i][j/2] 参考dp[i][j-1],现在我们需要在a串后边再添加j/2个字符,也就是要求b这个字符串只有在满足第0个到第j/2-1个与第j/2个到第j个完全相同,这种情况下才能对a进行复制操作
这个时候 dp[i][j]=dp[i][j/2]+1
公式 dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1,(dp[i-1][j-1] or dp[i-1][j-1]+2),dp[i][j/2]+1(这项必须满足条件才能出现))
初始条件,当a串长度为0,变为b串所需步数为b串长度,同里
dp[0][n]=n dp[m][0]=m;0<=m<=a长度 0<=n<=b长度
fzu2172 字符串dp的更多相关文章
- 【BZOJ 2121】 (字符串DP,区间DP)
2121: 字符串游戏 Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对于一个在集合S中的字符串p,如果p在L中出现,B ...
- AtCoder Regular Contest 081 E - Don't Be a Subsequence(字符串DP)
引用自:onion_cyc 字符串DP一直不是强项...以后没思路的题就想DP和网络流23333333 f[i]表示从i开始的后缀非子序列的最短长度 pos[i][j]表示从i开始的j字符最早出现位 ...
- NOIP2015Day2T2子串(字符串dp)
又被“if(a=b)”坑了QAQ...写C++还是得开Warning,这么久了pascal还没改过来咋回事啊QWQ 题目大意就不说了OWO 网上的题解都不怎么看得懂啊...好像写得都很乱?还是我太sb ...
- Codeforces 1150D(字符串dp)
反思 三维的dp压根没看出来,看题解以后思路又很直观,找几道字符串dp练练才行 序列自动机和优化一维略 /* __ __ * ____| |_____| |____ * | | * | __ | * ...
- 51nod 1092 回文字符串 (dp)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1092 这个题是poj-3280的简化版,这里只可以增加字符,设 dp[i ...
- Codeforces Round #358 (Div. 2) D. Alyona and Strings 字符串dp
题目链接: 题目 D. Alyona and Strings time limit per test2 seconds memory limit per test256 megabytes input ...
- NYOJ37-回文字符串(dp)
37-回文字符串 内存限制:64MB 时间限制:3000ms 特判: No通过数:88 提交数:177 难度:4 题目描述: 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如& ...
- 牛客练习赛37-筱玛的字符串-DP递推
筱玛的字符串 思路 :dp [ i ] [ j ] [ 3 ] 分别代表到第 i 位时 左括号比右括号多 j ,后面有三个状态 分别表示当前位置 S3的字符 是正在反转的,还是 反转完成的,还是没有反 ...
- Maximum Questions CodeForces - 900E (字符串,dp)
大意:给定长$n$的字符串$s$, 只含'a','b','?', '?'可以替换为任意字符, 在给定长$t$的字符串, "ababab...", 求替换尽量少的'?', 使得$s$ ...
随机推荐
- JavaWeb学习笔记——Tomcat相关
Tomcat目录分析 1.bin 存放启动和关闭Tomcat的脚本文件 2.conf 存放Tomcat服务器的各种配置文件 3.lib 存放Tomcat服务器的支持jar包 4.logs 存放T ...
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【三】——Web Api入门
系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 经过前2节的介绍,我们已经把数据访问层搭建好了,从本章开始就是Web Api部分了.在正式开 ...
- Debian 8安装ibus输入法
# apt-get install ibus ibus-sunpinyin ibus-table-wubi
- php Hash Table(二) Hash函数
哈希表最关键的几个方面有: 通过key访问(通过哈希函数计算出key) 映射到数据结构中(哈希表本身的存储结构) 映射的处理(冲突或者碰撞检测和处理函数) 理解PHP的哈希算法 一般来说对于整形索引进 ...
- OC-protocol
一.简单使用 1. 基本用途 可以用来声明一大堆方法(不能声明成员变量) 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明 只要父类遵守了某个协议,就相当于子类也遵守了 2. 格式 协议 ...
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
相信用过hibernate的兄弟们都会因为多表复杂查询后,为返回的结果如何组装到一个VO中而烦恼不已.我也不停的为此而烦恼,但是在看了hibernate的transform后,感觉这个方法还挺管用的. ...
- java String 中 intern方法的概念
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...
- Redis实现简单的消息队列
1.问:什么是消息队列? 答:是一个消息的链表,是一个异步处理的数据处理引擎. 2.问:有什么好处? 答:不仅能够提高系统的负荷,还能够改善因网络阻塞导致的数据缺失. 3.问:用途有哪些? 答:邮件 ...
- 大熊君大话NodeJS之------Http模块
一,开篇分析 首先“Http”这个概念大家应该比较熟悉了,它不是基于特定语言的,是一个通用的应用层协议,不同语言有不同的实现细节,但是万变不离其宗,思想是相同的, NodeJS作为一个宿主运行环境,以 ...
- spring缓存Ehcache(入门2)
使用Ehcache缓存工具类. 一.由于使用了maven,所以需要引入依赖包: <dependency> <groupId>net.sf.ehcache</groupId ...