带跨越式的LCS,同样是在朴素的LCS上加入一种跨越一段的转移,这样我们要预处理出跨越一段给定串的转移函数。

这个题同样可以正反两边LCS做

呆马:

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#define inf 0x3f3f3f3f
#define maxn 1020 using namespace std; char s[maxn],t[maxn],d[maxn];
int f[][maxn][maxn],bs[maxn][maxn],bt[maxn][maxn]; int main()
{
int Case;
scanf("%d",&Case);
for (int o=;o<=Case;o++)
{
scanf(" %s %s %s",s+,t+,d+);
int ls=strlen(s+), lt=strlen(t+), ld=strlen(d+);
memset(bs,,sizeof(bs)); for (int i=;i<=ls;i++)
if (s[i]==d[]) bs[][i]=i;
else bs[][i]=bs[][i-];
for (int i=;i<=ld;i++)
for (int j=;j<=ls;j++)
if (s[j]==d[i]) bs[i][j]=bs[i-][j-];
else bs[i][j]=bs[i][j-]; memset(bt,,sizeof(bt)); for (int i=;i<=lt;i++)
if (t[i]==d[]) bt[][i]=i;
else bt[][i]=bt[][i-];
for (int i=;i<=ld;i++)
for (int j=;j<=lt;j++)
if (t[j]==d[i]) bt[i][j]=bt[i-][j-];
else bt[i][j]=bt[i][j-]; memset(f,,sizeof(f));
for (int i=;i<=ls;i++)
for (int j=;j<=lt;j++)
{
f[][i][j]=max(f[][i-][j],f[][i][j-]);
f[][i][j]=max(f[][i-][j],f[][i][j-]);
if (s[i]==t[j])
{
f[][i][j]=max(f[][i][j],f[][i-][j-]+);
if (f[][i-][j-])
f[][i][j]=max(f[][i][j],f[][i-][j-]+);
}
if (bs[ld][i] && bt[ld][j])
f[][i][j]=max(f[][i][j],f[][bs[ld][i]-][bt[ld][j]-]+ld);
}
printf("Case #%d: %d\n",o,f[][ls][lt]);
}
return ;
}

string

Hdu 4681 2013 Multi-University Training Contest 8 String的更多相关文章

  1. hdu 4915 Parenthese sequence--2014 Multi-University Training Contest 5

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4915 Parenthese sequence Time Limit: 2000/1000 MS (Ja ...

  2. hdu 4902 Nice boat--2014 Multi-University Training Contest 4

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=4902 Nice boat Time Limit: 30000/15000 MS (Java/Othe ...

  3. hdu 4925 Apple Tree--2014 Multi-University Training Contest 6

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4925 Apple Tree Time Limit: 2000/1000 MS (Java/Others ...

  4. HDU校赛 | 2019 Multi-University Training Contest 6

    2019 Multi-University Training Contest 6 http://acm.hdu.edu.cn/contests/contest_show.php?cid=853 100 ...

  5. HDU校赛 | 2019 Multi-University Training Contest 5

    2019 Multi-University Training Contest 5 http://acm.hdu.edu.cn/contests/contest_show.php?cid=852 100 ...

  6. HDU校赛 | 2019 Multi-University Training Contest 4

    2019 Multi-University Training Contest 4 http://acm.hdu.edu.cn/contests/contest_show.php?cid=851 100 ...

  7. HDU校赛 | 2019 Multi-University Training Contest 3

    2019 Multi-University Training Contest 3 http://acm.hdu.edu.cn/contests/contest_show.php?cid=850 100 ...

  8. HDU校赛 | 2019 Multi-University Training Contest 2

    2019 Multi-University Training Contest 2 http://acm.hdu.edu.cn/contests/contest_show.php?cid=849 100 ...

  9. HDU校赛 | 2019 Multi-University Training Contest 1

    2019 Multi-University Training Contest 1 http://acm.hdu.edu.cn/contests/contest_show.php?cid=848 100 ...

  10. HDU 6102 - GCDispower | 2017 Multi-University Training Contest 6

    个人感觉题解的复杂度很玄,参不透,有没有大佬讲解一下- - /* HDU 6102 - GCDispower [ 数论,树状数组] | 2017 Multi-University Training C ...

随机推荐

  1. 使用非Web方式从CA申请证书

    背景介绍:关于从CA申请证书这点事,网上的那些教程基本都是让我们通过访问https://server/certsrv这样的网页来操作的,我一直希望不依赖IIS就把这事干了,于是就有了下面的文章. 1. ...

  2. Markdown常用语法

    什么是Markdown Markdown 是一种方便记忆.书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档. 通过Markdown简单的语法,就可以使普通文本内容具有 ...

  3. Docker compose学习笔记

    一.compose compose 作用 你的应用可能需要很多个服务,比如web服务,数据库服务,缓存服务等等.我们可以把这些服务放到单独的容器里面,如果手工去配置这些服务会有些麻烦,docker c ...

  4. mvc学习(二)

    1.后台foreach 与 html的关系 <table border="1">@for (var i = 0; i < 10; i++){@Html.Raw(i ...

  5. js == 与 === 的区别,‘’与“”的区别

    js == 与 === 的区别 1.对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较"转化成同一类型后的值"看"值&quo ...

  6. GridView实现方块布局

    效果如下: 先创建一个BaseViewHolder package com.example.griddemo; import android.util.SparseArray; import andr ...

  7. linux下文件搜索命令学习笔记

    1. locate:按照文件名搜索文件 locate filename 与find在整个操作系统中遍历搜索不同,locate命令在/var/lib/mlocate这个后台数据库中按照文件名搜索,所以优 ...

  8. 弱网测试Android

    弱网测试一般是指模拟在网络环境比较差的情况下,检测APP是否有异常,如崩溃,数据收发出现丢包的情况 一.首先需要控制网络,有两种方式其一使用网络损伤仪进行,其二采用软件方式.硬件采购费用太贵,因此使用 ...

  9. Android 基于Android的手机邮件收发(JavaMail)之二( Welcome.java 和 ReceiveAndSend.java )

    周末休息,这次我们继上次内容继续.上一篇内容我们讲述的是一些准备工作.下载两个javamail.jar和activation.jar文件,然后再BuildPath~ 言归正传,为了展示效果,在这里我申 ...

  10. CSS补充之--页面布局、js补充,dom补充

    CSS补充之--页面布局 主站一:(下面是一个大致的模板) <div class="pg-header"> <div style="width: 120 ...