[HAOI2010] 最长公共子序列

求S串与T串的 最长公共子序列长度 及其 个数.

动态规划递推式:

\[f(i,j)=\max\left\{ f(i-1,j), f(i,j-1) \right\} \quad (S_i\neq T_j)
\]

\[f(i,j)=\max\left\{\text{ $^{(\varphi)}$ } f(i-1,j), f(i,j-1), \text{ $^{(\lambda)}$ } f(i-1,j-1)+1 \right\} \quad (S_i= T_j)
\]

\[g(i,j)= g(i-1,j) + g(i,j-1) - g(i-1, j-1) \quad \left(S_i\neq T_j\text{ and }f(i,j)=f(i-1,j-1)\ \right)
\]

\[g(i,j)= g(i-1,j) + g(i,j-1) + g(i-1, j-1) \quad \left(S_i= T_j\text{ and }(\lambda)\ \right)
\]

滚动数组压缩空间.

#include <cstdio>
#include <cstring>
#include <algorithm>
const int mod=100000000;
char S[5003], T[5003];
int sl, tl;
int f[2][5003], g[2][5003]; int main() {
scanf("%s", S+1);
scanf("%s", T+1);
sl=strlen(S+1)-1;
tl=strlen(T+1)-1;
for (register int i=0; i<=tl; ++i) g[0][i]=1;
for (register int i=1; i<=sl; ++i) {
g[i&1][0]=1;
for (register int j=1; j<=tl; ++j) {
g[i&1][j]=0;
f[i&1][j]=std::max(f[i&1^1][j], f[i&1][j-1]);
if (S[i]==T[j]) f[i&1][j]=std::max(f[i&1][j], f[i&1^1][j-1]+1);
if (f[i&1][j]==f[i&1^1][j]) g[i&1][j]+=g[i&1^1][j];
if (f[i&1][j]==f[i&1][j-1]) g[i&1][j]+=g[i&1][j-1];
if (S[i]==T[j] && f[i&1][j]==f[i&1^1][j-1]+1) g[i&1][j]+=g[i&1^1][j-1];
if (S[i]!=T[j] && f[i&1][j]==f[i&1^1][j-1]) g[i&1][j]-=g[i&1^1][j-1];
g[i&1][j]=(g[i&1][j] + mod) % mod;
}
}
printf("%d\n%d\n", f[sl&1][tl], g[sl&1][tl]);
return 0;
}

23 October的更多相关文章

  1. centos各版本信息

    CentOS version Architectures RHEL base Kernel CentOS release date RHEL release date Delay (days) 2.1 ...

  2. CentOS和Redhat发行版linux内核版本的对应关系

    由于Redhat和CentOS的发行版本现在众多,所以我们应该知道CentOS和Redhat及linux内核之间版本的对应关系对维护系统还是很有帮助的.对应的列表如下: Redhat 9.0————— ...

  3. 1.Tsung介绍(翻译)

    1.介绍 1.1什么是Tsung? Tsung(以前是IDX-Tsunami)是一种分布式负载测试工具.它是基于协议的,并且通常被用于压测HTTP, WebDAV, SOAP, PostgreSQL, ...

  4. 使用limma、Glimma和edgeR,RNA-seq数据分析易如反掌

    使用limma.Glimma和edgeR,RNA-seq数据分析易如反掌 Charity Law1, Monther Alhamdoosh2, Shian Su3, Xueyi Dong3, Luyi ...

  5. Docker容器技术-在开发中引用Docker

    明确一点: 容器不适合构建那种发布周期以周或月为单位的大型单一架构企业软件,容器适合采用微服务的方式,以及探索诸如持续部署这样的技术,使得我们能安全地在一天内多次更新生产环境. 一.在开发中引用Doc ...

  6. 【wiki】红帽linux

    Red Hat Enterprise Linux From Wikipedia, the free encyclopedia wiki 上面红帽的版本信息. https://en.wikipedia. ...

  7. October 23, 2013 - Fires and smoke in eastern China

    October 23, 2013 - Fires and smoke in eastern China Satellite: Aqua Date Acquired: 10/12/2013 Resolu ...

  8. Notes of the scrum meeting(2013/10/23)

    ps:本来是10月23号周三下午开的会,这几天由于各种事情忙,忘记写博客了,现在补上. 软工项目组buaa_smile开始项目第一次scrum meeting meeting time:4:00~5: ...

  9. Python学习笔记23:Django构建一个简单的博客网站(一个)

    在说如何下载和安装Django,本节将重点讨论如何使用Django站点. 一 新建project 命令:django-admin startproject mysite # 有的须要输入:django ...

随机推荐

  1. 07 归档模式 Active redo log丢失或损坏的恢复

    环境同上一篇 模拟处于active状态的redo log损坏 sesion 1 SYS@ orcl >/ GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEM ...

  2. Linux - 创建交换分区 swap

    购买的 1GB 内存的 Linux 小机器,在编译安装 PHP 的时候内存捉急,只好开启 swap 交换分区来增大内存. [root@VM_139_38_centos php-7.2.12]# cat ...

  3. Where we love is home, home that our feet may leave, but not our hearts.

    parcel.n. 包裹 endurance.n.耐力 rot.v.腐烂 ornament.n.装饰 pinch.v.捏 nationality.n.国家 sunshine.n.阳光 stagger. ...

  4. gitlab上传代码及报错总结

    将目录变成git可管理的仓库 git init 将文件添加到暂存区中 git add README.md 将文件提交到仓库 git commit -m "fisrt commit" ...

  5. oracle--多表联合查询sql92版

    sql92学习 -查询员工姓名,工作,薪资,部门名称 sql的联合查询(多表查询) --1.sql92标准 ----笛卡尔积:一件事情的完成需要很多步骤,而不同的步骤有很多种方式,完成这件事情的所有方 ...

  6. [Python3 填坑] 010 isalpha() 对于字母的定义

    目录 1. print( 坑的信息 ) 2. 开始填坑 官方文档 1. print( 坑的信息 ) 挖坑时间:2019/01/14 明细 坑的编码 内容 Py009-1 isalpha() 理当只有输 ...

  7. [BZOJ 2989]数列(CDQ 分治+曼哈顿距离与切比雪夫距离的转化)

    [BZOJ 2989]数列(CDQ 分治) 题面 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]| ...

  8. (四:NIO系列) Java NIO Selector

    出处:Java NIO Selector 1.1. Selector入门 1.1.1. Selector的和Channel的关系 Java NIO的核心组件包括: (1)Channel(通道) (2) ...

  9. %.*f (特殊的输出符)

    c语言中每一种数据类型都有自己的专属占位符,如整型的%d,浮点型的%f等,而*也是一个占位符,比较特殊而已. 比如输入一个n,输出0.5的n次方,就可以这么写 #include<bits/std ...

  10. nextSibling 属性与 nextElementSibling 属性的异同

    不同点: nextSibling 属性返回元素节点之后的下一个兄弟节点(包括文本节点.注释节点): nextElementSibling 属性只返回元素节点之后的下一个兄弟元素节点(不包括文本节点.注 ...