题意:

两个串,s  t,求s的所有子串中大于 t  的数目

题解:

  dp[i][j] 表示 s的前i个,匹配 t 的前 j 个的种类数,
  那么 if(s[i] == t[j])
      dp[i][j] = dp[i -1][j] + dp[i - 1][j - 1];
    else
      dp[i][j] = dp[i - 1][j]; 
  对于长度大于 t 的没有前导0的都符合,那么就看长度等于t的就可以了,
  当匹配到 i, j 的时候,if(s[i] > t[j]) 那么该贡献为:
    前面匹配j-1的种类数*后面随便选len2-j个,即当前的贡献就为dp[i - 1][j - 1] * C[len1 - i][len2 - j]。
 

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = ;
const ll mod = ;
char s[N],t[N];
ll C[N][N];
ll dp[N][N];
int main()
{
//打表杨辉三角
C[][] = ;
C[][] = C[][] = ;
for(int i=;i<=;i++){
C[i][] = ;
for(int j=;j<=i;j++){
C[i][j] = C[i-][j-] + C[i-][j] ;
if(C[i][j]>=mod) C[i][j] -= mod ;
}
} int T,n,m;
for( scanf("%d",&T) ; T ; T-- ){
scanf("%d%d",&n,&m);
scanf("%s%s",s+,t+); for(int i=;i<=n;i++){
dp[i][] = ;
}
//计算长度相同时,某一位置比t的位置大,对答案的贡献
ll ans = ;
for(int i=;i<=n;i++){
for(int j=;j<=min(i,m);j++){
dp[i][j] = dp[i-][j] ;
if( s[i] == t[j] ){
dp[i][j] = (dp[i][j] + dp[i-][j-]) % mod ;
}
else if( s[i] > t[j] ){
ans = (ans + (ll)dp[i-][j-] * C[n-i][m-j]) %mod ;
}
}
}
//计算长度大于t串长度时,对答案的贡献
for(int i=;i<=n;i++){
if( s[i] =='' ) continue ;
for(int j=m;j<=n-i;j++){
ans = (ans + C[n-i][j])%mod ;
}
}
printf("%lld\n",ans);
}
return ;
}
 
 
 

【动态规划】subsequence 1的更多相关文章

  1. 动态规划求最长公共子序列(Longest Common Subsequence, LCS)

    1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...

  2. hdu 1159:Common Subsequence(动态规划)

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. 动态规划 Common Subsequence

    描述 A subsequence of a given sequence is the given sequence with some elements (possible none) left o ...

  4. PAT A1007 Maximum Subsequence Sum (25 分)——最大子列和,动态规划

    Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to ...

  5. HDU 1159 Common Subsequence 动态规划

    2017-08-06 15:41:04 writer:pprp 刚开始学dp,集训的讲的很难,但是还是得自己看,从简单到难,慢慢来(如果哪里有错误欢迎各位大佬指正) 题意如下: 给两个字符串,找到其中 ...

  6. python编写PAT 1007 Maximum Subsequence Sum(暴力 分治法 动态规划)

    python编写PAT甲级 1007 Maximum Subsequence Sum wenzongxiao1996 2019.4.3 题目 Given a sequence of K integer ...

  7. Leetcode之动态规划(DP)专题-392. 判断子序列(Is Subsequence)

    Leetcode之动态规划(DP)专题-392. 判断子序列(Is Subsequence) 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅包含英文小写字母. ...

  8. HDU 1159 Common Subsequence (动态规划、最长公共子序列)

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. hdu1159Common Subsequence——动态规划(最长公共子序列(LCS))

    Problem Description A subsequence of a given sequence is the given sequence with some elements (poss ...

  10. nlog(n)解动态规划--最长上升子序列(Longest increasing subsequence)

    最长上升子序列LIS问题属于动态规划的初级问题,用纯动态规划的方法来求解的时间复杂度是O(n^2).但是如果加上二叉搜索的方法,那么时间复杂度可以降到nlog(n).  具体分析参考:http://b ...

随机推荐

  1. PySpider的安装

    使用 Pip 安装,命令如下 pip install pyspider 命令执行完毕即可安装成功. 常见错误: Windows 下可能会出现这样的错误提示:Command "python s ...

  2. linux 部署jar

    Linux 运行jar包命令如下: 方式一: java -jar xxx.jar 这种方式特点是ssh窗口关闭时,程序中止运行.或者是运行时没法切出去执行其他任务,有没有办法让Jar在后台运行呢: 方 ...

  3. cast()、decimal(M,D) --SQL对查询字段保留小数位操作

    参考:http://database.51cto.com/art/201005/201651.htm http://www.lai18.com/content/1693593.html 直接上例子,以 ...

  4. Postgresql 直接在查询结果中生成唯一ID

    不需要排序 select (row_number() over()) as id from generate_series(1,100)1根据指定的字段排序 select (row_number() ...

  5. laravel中orderBy使用

    laravel中orderBy使用 一.总结 一句话总结: 链式操作:laravel中的数据库操作可以是链式操作,所以类似这种想要多个orderBy效果的就直接接在后面写就可以了 User::orde ...

  6. koa 项目打包(使用webpack打包koa2 框架app)

    关键问题 一:所有node_modules里的模块都不进行打包 webpack的核心功能是将引用的各个模块打到一个文件里,并会将各种规范的模块进行统一的模块化处理(webpack规范). 然而node ...

  7. MongoDB in Action (MongoDB 实战).pdf

    http://www.open-open.com/doc/view/691d4d2232ce4b30b14c6b218fff4be8

  8. FullSync不支持中文文件名

    FullSync,能实现多种方式.协议的目录同步软件,但不支持中文文件名.

  9. C++中重载、重定义、重写概念辨析

    重载:函数名相同,函数的参数个数.参数类型或参数顺序三者中必须至少有一种不同.函数返回值的类型可以相同,也可以不相同.发生在一个类内部. 重定义:也叫做隐藏.覆盖,子类重新定义父类中有相同名称的非虚函 ...

  10. partprobe 和 partx 的用法

    partprobe: 用于重读分区表,当出现删除文件后,出现仍然占用空间.可以partprobe在不重启的情况下重读分区. 将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表. -d 不更新内核 ...