Contest - 河南省多校连萌(四)

Problem G: 沉迷字符的WJJ

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 6  Solved: 5

SubmitWeb Board

Description

WJJ最近迷恋上了字符串,每次大家一起吃饭时他都会在大家面前炫耀一番新学的知识,于是
KKK和FFF决定难为一下WJJ。KKK和FFF分别写一个字符串s1和s2,要求WJJ也写一个字符串s3。
要求WJJ回答两个问题:
       1、s1和s2都为s3的子序列并且使s3的长度最短
       2、s3的组成方案有多少种?
 

Input

  第一行输入一个t,表示t组数据
   然后每组数据输入两个字符串,分别为s1,s2, 0<|s1|<=30, 0<|s2|<=30

Output

输出两个数分别为满足条件的s3的长度len1和方案数sum(sum小于2^63),输出占一行

Sample Input

3
ALKJ
SADIU
AAA
BBB
ABABAB
BABABA

Sample Output

8 20
6 20
7 2

HINT

 #include <bits/stdc++.h>

 using namespace std;

 char s1[], s2[];
long long dp[][], sum[][]; int main ()
{
int t;
cin >> t;
while(t--)
{
cin >> s1+ >> s2+;
int m = strlen(s1+);
int n = strlen(s2+);
memset(sum, , sizeof(sum));
for(int i = ;i <= m;i++) dp[i][] = i, sum[i][] = ;//初始化
for(int i = ;i <= n;i++) dp[][i] = i, sum[][i] = ;
for(int i = ;i <= m;i++)
for(int j = ;j <= n;j++)
{
if(s1[i] == s2[j])
{
dp[i][j] = dp[i-][j-] + ;
sum[i][j] = sum[i-][j-];
}
else
{
dp[i][j] = min(dp[i-][j], dp[i][j-]) + ;
if(dp[i][j-] >= dp[i-][j]) sum[i][j] += sum[i-][j];
if(dp[i-][j] >= dp[i][j-]) sum[i][j] += sum[i][j-];
}
}
printf("%lld %lld\n", dp[m][n], sum[m][n]);
}
return ;
}

LCS的变形, dp[i][j]就是s1中前i个字符和s2中前j个字符可以得到的满足条件的长度
当s1[i] == s2[j]时 dp[i][j] = d[i-1][j-1] + 1
不相等时 dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + 1    //在dp[i-1][j-1]的基础上加上s1或s2中的一个字符取其最短,然后再加一
sum[i][j]表示方案数
当s1[i] == s2[j]时 sum[i][j] = sum[i-1][j-1]      //方案数不变
不相等时 如果dp[i][j-1] == dp[i-1][j], 那么两个方向都可以选择, 所以 sum[i][j] = sum[i-1][j] + sum[i][j-1]
如果dp[i][j-1] < dp[i-1][j] sum[i][j] = sum[i][j-1]    //长度最短时的方案数
如果dp[i][j-1] > dp[i-1][j] sum[i][j] = sum[i-1][j]

感觉这种题如果真正明白了,动态规划的原理其实也没有那么难,这一题的关键主要是理解上面的那段题解。

Problem G: 沉迷字符的WJJ (LCS)的更多相关文章

  1. ZOJ 4010 Neighboring Characters(ZOJ Monthly, March 2018 Problem G,字符串匹配)

    题目链接  ZOJ Monthly, March 2018 Problem G 题意  给定一个字符串.现在求一个下标范围$[0, n - 1]$的$01$序列$f$.$f[x] = 1$表示存在一种 ...

  2. Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem G. k-palindrome dp

    Problem G. k-palindrome 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c7022 ...

  3. 实验9:Problem G: 克隆人来了!

    想要输出""的话: cout<<"A person whose name is \""<<name<<" ...

  4. 实验12:Problem C: 重载字符的加减法

    Home Web Board ProblemSet Standing Status Statistics   Problem C: 重载字符的加减法 Problem C: 重载字符的加减法 Time ...

  5. 实验12:Problem G: 强悍的矩阵运算来了

    这个题目主要是乘法运算符的重载,卡了我好久,矩阵的乘法用3个嵌套的for循环进行,要分清楚矩阵的乘法结果是第一个矩阵的行,第二个矩阵的列所组成的矩阵. 重载+,*运算符时,可以在参数列表中传两个矩阵引 ...

  6. 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem G: Check The Check(模拟国际象棋)

    Problem G: Check The Check Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 10  Solved: 3[Submit][Statu ...

  7. The Ninth Hunan Collegiate Programming Contest (2013) Problem G

    Problem G Good Teacher I want to be a good teacher, so at least I need to remember all the student n ...

  8. 【贪心+中位数】【新生赛3 1007题】 Problem G (K)

    Problem G Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  9. Problem G: If We Were a Child Again

    Problem G: If We Were a Child AgainTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 18 Solved: 14[Submi ...

随机推荐

  1. apache启动不了, 查找错误

    今天apache启动不了, 本来以为是端口冲突, 用 cmd-> netstat -aon|findstr "80"  或 tasklist|findstr "80 ...

  2. .NET高级软件工程师面试题排行榜(转载)

    原文引用:https://m.sanwen8.cn/p/104gMSd.html 一.对于 Web 性能优化,您有哪些了解和经验吗? 出现指数:五颗星 主要考点:这道题是博主在博客园的新闻里面看到的, ...

  3. $(function(){})理解

    $(function(){})  =  jQuery(function(){}) = jQuery(document).ready(function(){ });

  4. matplotlib —— 添加文本信息(text)

    [详细]http://hyry.dip.jp/tech/book/page/scipy/matplotlib_fast_plot.html http://blog.csdn.net/lanchunhu ...

  5. maven使用阿里云maven库

    在maven\conf\settings.xml中的mirrors添加 <mirror> <id>nexus-aliyun</id> <name>Nex ...

  6. hadoop之HDFS学习笔记(二)

    主要内容:hdfs的核心工作原理:namenode元数据管理机制,checkpoint机制:数据上传下载流程 1.hdfs的核心工作原理 1.1.namenode元数据管理要点 1.什么是元数据? h ...

  7. 《GB/T 20988-2007:信息系统灾难恢复规范》[中](国家质检总局 & 国标委)阅读笔记

    第 0 章:引言 [感]GB/T 20988 引用了 SHARE 78 会议(标准)上的有关内容和思想,并结合国家重要信息系统行业技术发展和实践经验制定而成. GB/T 20988 提出了信息系统灾难 ...

  8. Notebook computer(Ubuntu)

    ==============Mask_RCNN============== source activate flappbird cd /home/luo/Desktop/MyFile/MaskRCNN ...

  9. BaseSEOPage统一设置网站SEO

    代码: public class BaseSeoPage : System.Web.UI.Page { protected override void OnPreLoad(EventArgs e) { ...

  10. Golang之json序列化(struct,int,map,slice)

    老规矩,直接上代码 package main import ( "encoding/json" "fmt" ) //把结构体都改小写 type User str ...