【BZOJ2423】[HAOI2010]最长公共子序列 DP
【BZOJ2423】[HAOI2010]最长公共子序列
Description
Input
Output
Sample Input
BACBBD.
Sample Output
7
题解:傻题,DP的时候顺便统计一下方案数即可,注意去重。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int P=100000000;
int f[2][5010],g[2][5010];
int n,m;
char S[5010],T[5010];
int main()
{
scanf("%s%s",S,T),n=strlen(S)-1,m=strlen(T)-1;
int i,j,d;
for(i=0;i<=m;i++) g[0][i]=1;
for(i=1;i<=n;i++)
{
d=i&1;
memset(g[d],0,sizeof(g[d]));
memset(f[d],0,sizeof(f[d]));
g[d][0]=1;
for(j=1;j<=m;j++)
{
f[d][j]=max(f[d][j-1],f[d^1][j]);
if(S[i-1]==T[j-1]) f[d][j]=max(f[d][j],f[d^1][j-1]+1);
if(f[d][j]==f[d][j-1]) g[d][j]=(g[d][j]+g[d][j-1])%P;
if(f[d][j]==f[d^1][j]) g[d][j]=(g[d][j]+g[d^1][j])%P;
if(S[i-1]==T[j-1]&&f[d][j]==f[d^1][j-1]+1) g[d][j]=(g[d][j]+g[d^1][j-1])%P;
if(f[d][j]==f[d][j-1]&&f[d][j]==f[d^1][j]&&f[d][j]==f[d^1][j-1])
g[d][j]=(g[d][j]-g[d^1][j-1]+P)%P;
}
}
printf("%d\n%d",f[n&1][m],g[n&1][m]);
return 0;
}
【BZOJ2423】[HAOI2010]最长公共子序列 DP的更多相关文章
- [BZOJ2423][HAOI2010]最长公共子序列
[BZOJ2423][HAOI2010]最长公共子序列 试题描述 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x ...
- BZOJ2423 HAOI2010最长公共子序列(动态规划)
大讨论.注意去重. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib& ...
- Luogu P2516 [HAOI2010]最长公共子序列 DP
首先$LIS$显然:$f[i][j]=max(f[i][j-1],f[i-1][j],(a[i]==b[j])*f[i-1][j-1])$ 考虑如何转移数量: 首先,不管$a[i]$是否等于$b[j] ...
- 2021.12.10 P2516 [HAOI2010]最长公共子序列(动态规划+滚动数组)
2021.12.10 P2516 [HAOI2010]最长公共子序列(动态规划+滚动数组) https://www.luogu.com.cn/problem/P2516 题意: 给定字符串 \(S\) ...
- 【BZOJ2423】最长公共子序列(动态规划)
[BZOJ2423]最长公共子序列(动态规划) 题面 BZOJ 洛谷 题解 今天考试的时候,神仙出题人\(fdf\)把这道题目作为一个二合一出了出来,我除了orz还是只会orz. 对于如何\(O(n^ ...
- 【bzoj2423】最长公共子序列[HAOI2010](dp)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2423 题目大意:求两个字符串的最长公共子序列长度和最长公共子序列个数. 这道题的话,对于 ...
- [HAOI2010]最长公共子序列(LCS+dp计数)
字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk-1”是X ...
- bzoj 2423: [HAOI2010]最长公共子序列【dp+计数】
设f[i][j]为a序列前i个字符和b序列前j个字符的最长公共子序列,转移很好说就是f[i][j]=max(f[i-1][j],f[i][j-1],f[i-1][j-1]+(a[i]==b[j])) ...
- bzoj:2423: [HAOI2010]最长公共子序列
Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0, ...
随机推荐
- 基于注解配置spring
1 对 bean 的标注基于注解方式有3个注解 @Component @Repository 对DAO类进行标注 @Service 对Service类进行标注 @Controller 对Contro ...
- unity, 相机空间 与 相机gameObject的局部空间
在unity里 相机空间 与 相机gameObject的局部空间 不重合. Camera.worldToCameraMatrix的文档中有这样一句话: Note that camera space m ...
- blender, 创建多边形面片
按a键清除所有选择,进入Edit Mode,选vertex select方式.然后按住control,使用MLB连续画多个顶点,形成一个多边形,如图所示: 然后同时选中两个端点,点Make Edge/ ...
- php调试函数
void debug_print_backtrace ([ int $options = 0 [, int $limit = 0 ]] ) array debug_backtrace ([ int $ ...
- maven optional可选依赖
应用场景:projectA 依赖projectB, projectB 依赖projectC时 <dependency> <groupId>com.itear.projectC ...
- PCIe调试心得_DMA part1
作者 :East FPGA那点事儿 1.PCIe的DMA介绍在PCIe中需要使用DMA的项目,一定要先看XAPP1052,里面包含一个DMA的参考设计,对初学者有极大的帮助. XAPP1052中包含 ...
- Ubuntu 16.04安装有道词典
以前用Ubuntu 14.04 的时候,直接下载有道词典官方deb安装包,就安装好了,现在换成Ubuntu 16.04因为有些依赖问题就无法安装成功.于是Google之,成功解决,也顺便熟悉了一下dp ...
- Java compiler level does not match the version of the installed Java project facet 的解决方案
今天将MyEclipse升级到 9.1 后,打开原来的工作空间,原来所有的项目都前面都显示了一个小叉叉,代码中却没有任何错误.于从 problems 视图中查看错误信息,错误信息的"D ...
- love2d--glsl01简单的渲染
love2d一个好玩的地方是支持glsl1.2,并修改简化,glsl1.2的文档 地址为:http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.2 ...
- C#如何调用其他.config配置文件,就是2个乃至3个以上的config文件
XmlDocument xDoc = new XmlDocument(); try { xDoc.Load(配置文件路径); XmlNode xNode; XmlElement xElem; xNod ...