HDU5763 another meaning -(KMP+DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5763
思路:dp[i]表示前i个字符组成的字符串所表示的意思数量,则当匹配时dp[i]=dp[i-1]+dp[i-lenb],不匹配时dp[i]=dp[i-1]。匹配的判断可以用KMP。
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
const int N=1e5+3;
const int mod=1e9+7;
char a[N],b[N];
ll dp[N];
int lena,lenb,next[N];
void get_next()
{int j = 0 ,k = -1;next[0] = -1;while(j < lenb){if(k == -1 || b[j] == b[k]){j++,k++;next[j] = k;}else k = next[k];}
}
void kmp()
{get_next();int i = 0 ,j = 0;memset(dp,0,sizeof(dp));dp[0] = 1;while(i<lena){if(j == -1||a[i]==b[j]){i++;dp[i] = dp[i-1];j++;}else j = next[j];if(j == lenb){dp[i] = (dp[i-lenb] + dp[i]) % mod;j = next[j];}}
}
int main()
{int T,cas=1;scanf("%d",&T);while(T--){scanf("%s %s",a,b);lena=strlen(a),lenb=strlen(b);kmp();printf("Case #%d: %lld\n",cas++,dp[lena]);}return 0;
}
转载于:https://www.cnblogs.com/westwind1005/p/5975203.html
HDU5763 another meaning -(KMP+DP)相关推荐
- HDU5763 Another Meaning(KMP+dp)
题意: 给你一个主串一个子串,然后主串中匹配到子串就可以把当前部分改为*, 问主串有多少中不同的样子 思路: 先KMP预处理主串中所有匹配到子串的末尾位置 然后用dp dp[N][2]只更新成功匹配的 ...
- 2017 Multi-University Training Contest - Team 4:1002. Classic Quotation(KMP+DP)
题意:给你两个字符串S和T,每次询问(L, R)求出所有满足x<=L, y>=R的(x, y),S串的前x个字符和后y个字符接在一起后包含字符串T的个数之和 说实话..这题会做题解也还是看 ...
- hdu3689(kmp+dp)
题意:问随机生成一个长度为m(m<=1000)长度的字符串,出现某个子串s的概率是多少. 解法:dp+kmp优化.ans[i][j]表示i长度,走到了s的j位置的概率,当然这是在i之前没有出现s ...
- HDU 3336 Count the string(KMP+DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 题意:给你一个字符串,计算其所有前缀在该字符串出现的次数的总和. 思路:next[j]=i,代表 ...
- Perfect service(树形dp)
Perfect service(树形dp) 有n台机器形成树状结构,要求在其中一些机器上安装服务器,使得每台不是服务器的计算机恰好和一台服务器计算机相邻.求服务器的最小数量.n<=10000. ...
- 最大搜索二叉子树大小(树形dp)
给定一颗二叉树的头节点head,返回这棵二叉树中最大的二叉搜索子树 (二叉搜索树:该二叉树中左子树所有节点比它小,右子树所有节点比它大 ): 思路: 这是一道分析可能性求解在二叉树上做类似动态规划的问 ...
- HDU 1520 Anniversary party(树形dp)
HDU 1520 Anniversary party(树形dp) 树形dp第一题!!! 题意很清晰,思路也很明确.很容易找到根节点,即最大的boss,通过根节点向下dp. 状态转移方程: int to ...
- 「SDOI2016」储能表(数位dp)
「SDOI2016」储能表(数位dp) 神仙数位 \(dp\) 系列 可能我做题做得少 \(QAQ\) \(f[i][0/1][0/1][0/1]\) 表示第 \(i\) 位 \(n\) 是否到达上界 ...
- 力扣- - 最短回文串(KMP算法)
力扣- - 最短回文串(KMP算法) 文章目录 力扣- - 最短回文串(KMP算法) 一.题目描述 二.分析之KMP算法 1.暴力法 2.KMP算法 3.next数组求法1:暴力查找最长的前后缀 4. ...
最新文章
- 蓝桥杯-最短路(floyd算法)
- java的idea的使用_java学习-IDEA相关使用
- 对象androidandroid 开发中 如何取得ListView 的 每条Item 的对象
- python 线程 的类库_python类库32[多线程]
- 定向输出命令_数据流的世界,带你了解Linux重定向
- c 语言五子棋游戏代码,C语言案例:控制台版本的五子棋游戏【代码】
- linux下daemon守护进程的实现(以nginx代码为例)
- 属于微型计算机主要性能指示,2014年兰大入学测试题--计算机基础
- Install Rouge and Pyrouge for python 2.7 (conda virtual env) on Linux 64
- 滴滴柳青探望被害司机家属;支付宝信用卡还款收费;ofo 查处 8 起贪腐案件 | 极客头条...
- 两轮差速机器人坐标系及运动轨迹描述
- 三维点云数据处理软件供技术原理说明_十大点云数据处理技术梳理
- 基于C# winform的操作系统课程设计:SPOOLING假脱机输入输出技术模拟
- 2021招银网络提前批笔试编程题C++
- (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法...
- SQL 实验项目5_触发器
- 自定义ro.build.fingerprint
- 微积分小课堂:微分(从宏观变化了解微观趋势)
- 其他——调试时chrom崩溃
- 医疗人工智能适逢其时 信息通信网络赋能千行百业
热门文章
- android 分享qq微信朋友圈,H5微信JS-SDK实现分享朋友 朋友圈以及QQ自定义分享
- python坐标轴拉伸_python-Matplotlib垂直拉伸histogram2d
- php验证码显示碎图片,我的验证码只显示破碎的小图片
- xml格式的word转为标准格式_保持的怎么保证Word格式不变?4个技巧需要带走
- python gzip压缩_Python gzip –压缩解压缩
- java静态构造函数_为什么不允许使用Java静态构造函数?
- java实例摘要(四)
- 什么是接口?如何定义接口?如何实现接口?
- Manage,管道的简单应用,进程池,队列的简单应用
- 用mobiscroll.js的treelist实现弹出下拉效果