HDU 5282 Senior's String DP(LCS变形)

来源:互联网 发布:龙歌ol mac版本 编辑:程序博客网 时间:2024/06/06 10:57
HDU 5282
题意:给出两个字符串a,b.假如a,b的LCS长度为L,从a中选出子序列长度为LCS并且该子序列在b中出现,问有多少种方案? 
| a|,|b|<=1e3. (长度为L的子序列有2^L个).两个子序列有某个位置选择的下标不同就视为个不同.


dp[i][j]:a的前缀i和b的前缀j的LCS长度.
f[i][j]:a的前缀i有多少个长度为dp[i][j]的子序列出现在b的前缀j中.
然后现在考虑选不选a的第i个字符.
不选a[i],则需要dp[i-1][j]=dp[i][j].
选a[i],则此时的LCS最后一个字符为a[i] 找到b的前缀j中字符a[i]最后一次出现的位置p

则如果选a[i] 则要满足dp[i-1][p-1]+1=dp[i][j].

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e3+5,inf=0x3f3f3f3f;const ll mod=1e9+7;char a[N],b[N];ll dp[N][N],f[N][N];int last[27];int main(){    int T;    cin>>T;    while(T--)    {        memset(f,0,sizeof(f));        memset(dp,0,sizeof(dp));        scanf("%s%s",a+1,b+1);        int n=strlen(a+1),m=strlen(b+1);        f[0][0]=1;        for(int j=1;j<=m;j++)            f[0][j]=1;        for(int i=1;i<=n;i++)        {            f[i][0]=1;            memset(last,-1,sizeof(last));            for(int j=1;j<=m;j++)            {                last[b[j]-'a']=j;                if(a[i]==b[j])                    dp[i][j]=dp[i-1][j-1]+1;                dp[i][j]=max(dp[i][j],max(dp[i-1][j],dp[i][j-1]));                if(dp[i-1][j]==dp[i][j])                    f[i][j]=f[i-1][j];                int p=last[a[i]-'a'];                if(p!=-1)                {                    if(dp[i-1][p-1]+1==dp[i][j])                        f[i][j]=(f[i][j]+f[i-1][p-1])%mod;                }            }        }        printf("%lld\n",f[n][m]);    }    return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 梁山伯与茱丽叶 梁山伯墓 梁山伯与祝英台歌曲 梁山伯与祝英台故事简介 梁山伯与祝英台简介 梁山伯祝英台真实历史 梁山伯与祝英台民间故事 梁山伯与祝英台主要内容 梁山伯与祝英台完整故事 梁山伯与祝英台真实故事 民间故事梁山伯与祝英台 梁山伯与祝英台内容 梁山伯与祝英台全文 梁山伯与祝英台楼台会 梁山伯与祝英台故事缩写 梁山伯与祝英台故事全文 梁山伯与祝英台读后感 缩写梁山伯与祝英台 梁山伯与祝英台缩写300字 梁山伯祝英台的故事 祝英台与梁山伯故事 梁山伯与祝英台缩写400字 梁山伯与祝英台作者 梁山伯和祝英台故事 梁山伯与祝英台作文 梁山伯与祝英台缩写200 梁山伯祝英台真实故事 梁山伯与祝英台缩写400字左右 梁山伯与祝英台缩写作文 梁山伯与祝英台什么剧 梁山伯与祝英台100字心得体会 梁山伯与祝英台结局 梁山伯与祝英台有东方什么称 梁山伯与祝英台故事原文 梁山伯与祝英台图片 梁山伯与祝英台原文 七世夫妻之梁山伯与祝英台 梁山伯与祝英台剧种 越剧梁山伯与祝英台全剧老版 梁山伯与祝英台感想 祝英台与梁山伯的故事