2483: DO IT YOURSELF

时间限制: 2 Sec  内存限制: 128 MB

提交: 8  解决: 3

[提交][状态][讨论版]

题目描述

有四个字符串S,T,tmp,ans,一开始给定S和T,tmp和ans为空字符串

每次可以对S串进行如下三步操作:(每次操作必须按顺序完成如下三步,按顺序完成三步称为一次操作)

第一步:选取S串的一段子串,S[L]…S[R],L<=R

第二步:将tmp串设置为S[L]…S[R],将tmp串拼接到ans串尾部

第三步:将S[0]…S[R]设置为‘*’,将tmp串设置为空字符串

问最少需要几次操作,能使得字符串ans和T相同。

输入

第一行输入一个整数T,表示有T组测试数据

每组测试数据第一行输入字符串S,第二行输入字符串T

1<=|S|,|T|<=1000

S和T串只包含小写英文字母

输出

每组测试数据输出最少操作次数,无解输出2147483647。

样例输入

3
jellydanhao
jao
jellydanhao
ll
jellydanhao
z

样例输出

2
1
2147483647

提示

来源

周甄陶

——————————————————————————————————————————

首先感谢学长的命题与指导!

思路:dp,dp[i][j]表示a串到i位置b串到j位置完全匹配的最小段数,有点类似于LCS的做法

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <cmath> using namespace std; #define LL long long
const int INF=0x3f3f3f3f; char a[1005];
char b[1005];
int dp[1005][1005]; int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s",a);
scanf("%s",b);
memset(dp,INF,sizeof dp);
int k1=strlen(a);
int k2=strlen(b);
for(int i=0; i<k1; i++)
if(b[0]==a[i])
while(i<k1)
dp[0][i]=1,i++; for(int i=1; i<k2; i++)
{ int mn=INF;
for(int j=i; j<k1; j++)
{
mn=min(dp[i-1][j-1],mn);
if(b[i]==a[j])
{
dp[i][j]=min(dp[i][j],mn+1);
if(b[i-1]==a[j-1])
dp[i][j]=min(dp[i-1][j-1]==INF?INF:dp[i-1][j-1],dp[i][j]);
}
else
dp[i][j]=min(dp[i][j-1],dp[i][j]);
}
}
int ans=INF; for(int i=0;i<k1;i++)
ans=min(ans,dp[k2-1][i]);
printf("%d\n",ans==INF?2147483647:ans);
}
return 0;
}

ZUFE2483 DO IT YOURSELF 2017-05-31 14:41 40人阅读 评论(0) 收藏的更多相关文章

  1. POJ2270&&Hdu1808 Halloween treats 2017-06-29 14:29 40人阅读 评论(0) 收藏

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8565   Accepted: 3111 ...

  2. Hdu1978 How many ways 2017-01-18 14:32 40人阅读 评论(0) 收藏

    How many ways Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total ...

  3. HDU1072 Nightmare(BFS) 2016-07-24 14:02 40人阅读 评论(0) 收藏

    Nightmare Problem Description Ignatius had a nightmare last night. He found himself in a labyrinth w ...

  4. 读取Webpage表中的内容 分类: H3_NUTCH 2015-02-10 14:59 418人阅读 评论(0) 收藏

    nutch将从网页中抓取到的信息放入hbase数据库中,默认情况下表名为$crawlId_webpage,但表中的内容以16进制进行表示,直接scan或者通过Java API进行读取均只能读取到16进 ...

  5. iOS正则表达式 分类: ios技术 2015-07-14 14:00 35人阅读 评论(0) 收藏

    一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

  6. Lucene学习总结之四:Lucene索引过程分析 2014-06-25 14:18 884人阅读 评论(0) 收藏

    对于Lucene的索引过程,除了将词(Term)写入倒排表并最终写入Lucene的索引文件外,还包括分词(Analyzer)和合并段(merge segments)的过程,本次不包括这两部分,将在以后 ...

  7. MS SQL数据批量备份还原(适用于MS SQL 2005+) 分类: SQL Server 数据库 2015-03-10 14:32 103人阅读 评论(0) 收藏

    我们知道通过Sql代理,可以实现数据库的定时备份功能:当数据库里的数据库很多时,备份一个数据库需要建立对应的定时作业,相对来说比较麻烦: 还好,微软自带的osql工具,比较实用,通过在命令行里里输入命 ...

  8. Hdu2181 哈密顿绕行世界问题 2017-01-18 14:46 45人阅读 评论(0) 收藏

    哈密顿绕行世界问题 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  9. Hadoop入门经典:WordCount 分类: A1_HADOOP 2014-08-20 14:43 2514人阅读 评论(0) 收藏

    以下程序在hadoop1.2.1上测试成功. 本例先将源代码呈现,然后详细说明执行步骤,最后对源代码及执行过程进行分析. 一.源代码 package org.jediael.hadoopdemo.wo ...

随机推荐

  1. Java并发-ConcurrentModificationException原因源码分析与解决办法

    一.异常原因与异常源码分析 对集合(List.Set.Map)迭代时对其进行修改就会出现java.util.ConcurrentModificationException异常.这里以ArrayList ...

  2. C# 关闭进程的时候总是捕捉到System.Threading.ThreadAbortException: 正在中止线程

    C# 关闭进程的时候总是捕捉到System.Threading.ThreadAbortException: 正在中止线程 这是由ThreadAbortException抛出的 可以写成下面的样子 tr ...

  3. hdu 2289 要二分的杯子

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2289 大意是 一个Cup,圆台形,给你它的顶部圆的半径,底部圆的半径,杯子的高度,和此时里面装的水的体 ...

  4. linux中的设备类型

    loop设备 loop设备 一.参考命令[root@localhost a]# losetup usage:  losetup loop_device                          ...

  5. HDOJ4734 F(x)

    原题链接 数位\(DP\),继续套记搜模板 定义\(f[pos][now]\),\(pos\)是枚举到的位数,\(now\)是\(A\)的权值减去当前枚举的数的权值,即剩余权值大小. 然后就是记搜模板 ...

  6. mysql 压缩方法

    show global variables like 'innodb_file_format%';alter table t row_format=COMPRESSED;

  7. Mac OS 10.12 - 在VMwear Workstation12.5.2中以两种方式进入恢复模式(Recovery)!!!

    注意:如果你打算安装Mac OS10.12 到虚拟机里面学习,那么我强烈建议你在没有安装任何其它软件之前,按照我这篇博客来进入恢复模式(Recovery),禁用Rootless机制!!!这样处理后,你 ...

  8. [转]slf4j 与log4j 日志管理

    log4j简易入门 package test.log4j; import org.apache.log4j.Logger; public class HelloLog4j { private stat ...

  9. Data Dictionary 数据字典

    数据字典是一种通用的程序设计方法.可以认为,不论什么程序,都是为了处理一定的主体,这里的主体可能是人员.商品(超子).网页.接口.数据库表.甚至需求分析等等.当主体有很多的属性,每种属性有很多的取值, ...

  10. [ES]elasticsearch章2 ES查询过程解析

    es服务端是准确知道每个document分布在哪个shard上: search一个比较复杂的执行模式,因为我们不知道那些document会被匹配到,任何一个shard上都有可能,所以一个search请 ...