【动态规划】subsequence 1
题意:
两个串,s t,求s的所有子串中大于 t 的数目
题解:
#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的更多相关文章
- 动态规划求最长公共子序列(Longest Common Subsequence, LCS)
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
- hdu 1159:Common Subsequence(动态规划)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 动态规划 Common Subsequence
描述 A subsequence of a given sequence is the given sequence with some elements (possible none) left o ...
- PAT A1007 Maximum Subsequence Sum (25 分)——最大子列和,动态规划
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to ...
- HDU 1159 Common Subsequence 动态规划
2017-08-06 15:41:04 writer:pprp 刚开始学dp,集训的讲的很难,但是还是得自己看,从简单到难,慢慢来(如果哪里有错误欢迎各位大佬指正) 题意如下: 给两个字符串,找到其中 ...
- python编写PAT 1007 Maximum Subsequence Sum(暴力 分治法 动态规划)
python编写PAT甲级 1007 Maximum Subsequence Sum wenzongxiao1996 2019.4.3 题目 Given a sequence of K integer ...
- Leetcode之动态规划(DP)专题-392. 判断子序列(Is Subsequence)
Leetcode之动态规划(DP)专题-392. 判断子序列(Is Subsequence) 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅包含英文小写字母. ...
- HDU 1159 Common Subsequence (动态规划、最长公共子序列)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu1159Common Subsequence——动态规划(最长公共子序列(LCS))
Problem Description A subsequence of a given sequence is the given sequence with some elements (poss ...
- nlog(n)解动态规划--最长上升子序列(Longest increasing subsequence)
最长上升子序列LIS问题属于动态规划的初级问题,用纯动态规划的方法来求解的时间复杂度是O(n^2).但是如果加上二叉搜索的方法,那么时间复杂度可以降到nlog(n). 具体分析参考:http://b ...
随机推荐
- airflow自动生成dag
def auto_create_dag(): dag_list=[] dag = DAG() dag_list.append(dag) return dag_list dags = auto_crea ...
- docker安装Elasticsearch Kibana和Cerebro
环境:win10家庭版,基于Docker Toolbox 首先先做好以下两步准备工作: ①.打开Oracle VM VirtualBox,设置虚拟机内存大小,默认不够安装,建议如下设置: ②.启动虚拟 ...
- SRS之SrsHls::on_video详解
1. SrsHls::on_video /* * mux the video packets to ts. * @param shared_video, directly ptr, copy it i ...
- 移动端——link标签
meta标签中提到了部分功能要结合link标签进行使用,link标签主要是存放CSS文件的地方,同时还有一些专属的移动端设置. <meta http-equiv="Content-Ty ...
- go代理设置
在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理. 设置GOPROXY代理: go env -w GOPROXY=https://goproxy. ...
- Mysql查询某字段重复值并删除重复值
1.查询重复值: select code,count(*) as count from hospital group by code having count>1; 该语句查询code重复值大于 ...
- Laravel中Session的使用
以file为示例 1.Http request session方法$request->session()->put('key1','value1');echo $request->s ...
- selenium 等待时间
三种时间模式:1.隐性等待:①等待页面所有元素都加载完才执行下一步,如果在设定的时间内没有加载完成所有元素,则抛出异常②隐式等待对整个driver周期都起作用,即设置一次后,所有执行都会有效from ...
- 阿里云轻应用服务器配置Ubuntu的JDK、Tmocat、Mysql和Redis
1.与服务器建立连接(达到效果:XShell和Xftp均可连接到服务器) 阿里云管理控制台提供的三种建立服务器连接方式: 使用浏览器发起安全连接(推荐) 客户端使用密钥进行连接 客户端使用账号密码 ...
- 一百一十三:CMS系统之前台注册界面
html {% from 'common/_macros.html' import static %}<!DOCTYPE html><html lang="en" ...