大讨论。注意去重。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 5010
#define P 100000000
int n,m,f[][N],g[][N];
char a[N],b[N];
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj2423.in","r",stdin);
freopen("bzoj2423.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
char c=getchar();
while (c>='A'&&c<='Z') a[++n]=c,c=getchar();
a[++n]=c,c=getchar();
while (c<'A'||c>'Z') c=getchar();
while (c>='A'&&c<='Z') b[++m]=c,c=getchar();
b[++m]=c,c=getchar();
for (int j=;j<=m;j++) g[][j]=;
for (int i=;i<=n;i++)
{
memset(f[i&],,sizeof(f[i&]));
memset(g[i&],,sizeof(g[i&]));
g[i&][]=;
for (int j=;j<=m;j++)
if (a[i]!=b[j])
{
f[i&][j]=max(f[i&^][j],f[i&][j-]);
if (f[i&^][j]==f[i&][j-])
{
if (f[i&^][j]==f[i&^][j-]) g[i&][j]=((g[i&^][j]+g[i&][j-])%P-g[i&^][j-]+P)%P;
else g[i&][j]=(g[i&^][j]+g[i&][j-])%P;
}
else if (f[i&^][j]>f[i&][j-]) g[i&][j]=g[i&^][j];
else g[i&][j]=g[i&][j-];
}
else
{
f[i&][j]=f[i&^][j-]+;
g[i&][j]=g[i&^][j-];
if (f[i&][j]==f[i&^][j]) g[i&][j]=(g[i&][j]+g[i&^][j])%P;
if (f[i&][j]==f[i&][j-]) g[i&][j]=(g[i&][j]+g[i&][j-])%P;
}
}
cout<<f[n&][m]-<<endl<<g[n&][m];
return ;
}

BZOJ2423 HAOI2010最长公共子序列(动态规划)的更多相关文章

  1. [BZOJ2423][HAOI2010]最长公共子序列

    [BZOJ2423][HAOI2010]最长公共子序列 试题描述 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x ...

  2. 【BZOJ2423】最长公共子序列(动态规划)

    [BZOJ2423]最长公共子序列(动态规划) 题面 BZOJ 洛谷 题解 今天考试的时候,神仙出题人\(fdf\)把这道题目作为一个二合一出了出来,我除了orz还是只会orz. 对于如何\(O(n^ ...

  3. 【BZOJ2423】[HAOI2010]最长公共子序列 DP

    [BZOJ2423][HAOI2010]最长公共子序列 Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字 ...

  4. 2021.12.10 P2516 [HAOI2010]最长公共子序列(动态规划+滚动数组)

    2021.12.10 P2516 [HAOI2010]最长公共子序列(动态规划+滚动数组) https://www.luogu.com.cn/problem/P2516 题意: 给定字符串 \(S\) ...

  5. 【bzoj2423】最长公共子序列[HAOI2010](dp)

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2423 题目大意:求两个字符串的最长公共子序列长度和最长公共子序列个数. 这道题的话,对于 ...

  6. 【ACM】最长公共子序列 - 动态规划

    最长公共子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列.tip:最长公共子序列也称作最 ...

  7. C++求解汉字字符串的最长公共子序列 动态规划

        近期,我在网上看了一些动态规划求字符串最长公共子序列的代码.可是无一例外都是处理英文字符串,当处理汉字字符串时.常常会出现乱码或者不对的情况. 我对代码进行了改动.使用wchar_t类型存储字 ...

  8. bzoj:2423: [HAOI2010]最长公共子序列

    Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0, ...

  9. [HAOI2010]最长公共子序列(LCS+dp计数)

    字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk-1”是X ...

随机推荐

  1. 为什么重写equals还要重写hashcode??

    equals和hashcode是object类下一个重要的方法,而object类是所有类的父类,所以所有的类都有这两个方法 equals和hashcode间的关系: 1.如果两个对象相同(即equal ...

  2. 虚拟机-Debian服务器配置

    目的:用虚拟机中的Debian 8 操作系统作为web服务器 一.安装操作系统 首先要在vmware中安装一个debian操作系统,由于要让在局域网中的其他计算机能访问到此虚拟操作系统,因此在vmwa ...

  3. 开启Node.js的大门

    其实也没什么好说的,简而言之,就是如何配置node.js环境,然后进行开发.博主最近比较堕落,觉得什么事情也没有就不知道想干什么,想融入一些事情又觉得没大神指引,于是自娱自乐开始自己玩node.js, ...

  4. ABAP error:CONVT_NO_NUMBER

    今天写了个接口,传入数据到SAP,结果接收后在报表展示时直接报错. 检查后发现数据转换出错,接收到的数据格式混乱. 最后检查了所有地方发现,源系统传入的数据长度为9个字节,但是自己的接收程序,定义数据 ...

  5. Cloud Foundry 组件

    原文:https://blog.csdn.net/little_crab_0924/article/details/78022391 Cloud Foundry 组件概述 Cloud Foundry ...

  6. 2017-2018-2 20155230《网络对抗技术》实验5:MSF基础应用

    基础问题回答 用自己的话解释什么是exploit,payload,encode. exploit 就是运行该模块吧,在msf的模块中配置好各项属性后exploit一下就开始运行使用该模块了 paylo ...

  7. 20155317《网络对抗》Exp4 恶意代码分析

    20155317<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用 ...

  8. face_recognition环境配置及命令行工具测试

    由于某种不可抗力(又是它!)我写了这篇博客,主要目的是记录. face_recognition是啥子? face_recognition号称世界上最简单的人脸识别库,可使用 Python 和命令行进行 ...

  9. 查询表的DDL

    例如: SQL>create table tab001(id varchar(4)); SQL>select dbms_metadata.get_ddl(‘TABLE’,’tab001’) ...

  10. python 实现分治法的几个例子

    分治法所能解决的问题一般具有以下几个特征: 1) 该问题的规模缩小到一定的程度就可以容易地解决 2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质. 3) 利用该问题分解出的子 ...