设f[i][j][0/1]为前i位选j段时其中第i位选/不选最多能匹配到哪,转移时f[i][j][0]→f[i+1][j][0],f[i][j][1]→f[i+1][j][0],f[i][j][1]→f[i+1][j][1],f[i][j][0]→f[i+1][j+1][1]。失配时找到最后一位相同字符,具体见代码。感觉非常假,欢迎hack。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define N 100010
#define M 102
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<'0'||c>'9')) c=getchar();return c;}
int gcd(int n,int m){return m==0?n:gcd(m,n%m);}
int read()
{int x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
int T,n,m,t,f[N][M][2],pre[N][26];
char a[N],b[N];
int main()
{
#ifndef ONLINE_JUDGEfreopen("bzoj5073.in","r",stdin);freopen("bzoj5073.out","w",stdout);const char LL[]="%I64d\n";
#elseconst char LL[]="%lld\n";
#endifT=read();while (T--){n=read(),m=read(),t=read();scanf("%s",a+1),scanf("%s",b+1);for (int i=0;i<26;i++) pre[0][i]=-1;for (int i=1;i<=m;i++){for (int j=0;j<26;j++)pre[i][j]=pre[i-1][j];pre[i][b[i]-'a']=i;}f[0][0][1]=-1;bool flag=0;for (int i=1;i<=n;i++){f[i][0][1]=-1;for (int j=1;j<=t;j++){f[i][j][0]=max(f[i-1][j][0],f[i-1][j][1]);f[i][j][1]=pre[max(f[i-1][j-1][0],f[i-1][j][1])+1][a[i]-'a'];if (f[i][j][1]==m) {flag=1;break;}}if (flag) break;}if (flag) puts("YES");else puts("NO");}return 0;
}

转载于:https://www.cnblogs.com/Gloid/p/10061599.html

BZOJ5073 小A的咒语(动态规划)相关推荐

  1. HDU 4521 小明系列问题——小明序列 LIS+动态规划

    HDU 4521小明系列问题--小明序列 Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u ...

  2. 拼写校正与动态规划的小故事

    喵喵喵,细心的你有没有发现小夕已经将卧室和书房精装修了呢~ 可以输入口令[ho],或者点击主页的"旧的故事"标签进入哦. 一个小现象 小夕今天给大家讲一个自然语言处理/信息检索领域 ...

  3. leetcode--最小路径和--python

    文章目录 题目 题目详情 示例 解题思路 思路 动态规划小知识 代码 运行结果 最佳方案 题目 题目详情 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总 ...

  4. 【字符串】最长回文子串 ( 动态规划算法 ) ★

    文章目录 一.回文串.子串.子序列 二.最长回文子串 1.动态规划算法 2.动态规划算法代码示例 一.回文串.子串.子序列 " 回文串 ( Palindrome ) " 是 正反都 ...

  5. 面试题总结14 动态规划

    很多复杂的问题需要使用动态规划,使用动态规划和分治法不同之处在于,分治将大问题分解为不重叠的小问题,而动态规划应用于子问题重叠的情况.在处理复杂问题时要时刻有这根筋,如果只是简单的遍历这样算法的复杂度 ...

  6. 动态规划(浅层基础)

    引言 在我看来动态规划和递归有很大的相似性,可以说动态规划就是剪枝后的递归,它舍去了递归重复的步骤,在时间复杂度上相对于递归有着非常大的提升,就比如说斐波那契数列(下题有)用递归的时间复杂度是指数级, ...

  7. 数据结构之动态规划问题

    数据结构中动态规划应该算得上是你避不开的一道槛了吧!其重要性不言而喻,今天就整理下学习笔记分享出来.希望对读者朋友也能有帮助,文章基本框架如下: 什么是动态规划 小偷的背包问题 LeetCode刷题 ...

  8. 算法(七):图解动态规划

    算法简介 动态规划,将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法 与贪婪算法区别 2者都是将大问题划分为规模更小的子问题 动态规划实质是分治法以及解决冗余,将各个子问题的解保存下来,让 ...

  9. 裴波那契数列的递归和动态规划算法

    裴波那契数列的递归和动态规划算法 一.    概论 通过对裴波那契数列的例子,分析了递归和动态规划算法的本质.并且说明了两种算法的区别. 裴波那契数列:800年前,意大利的数学家斐波纳契出版了惊世之作 ...

最新文章

  1. Python学习笔记——全局变量声明
  2. 如何设计一个 iOS 控件?(iOS 控件完全解析)
  3. DotNetNuke CSS hierarchy
  4. C#与.NET程序员面试宝典 1.4.3 笔试(举例微软、雅虎笔试题目)
  5. 斯坦福大学机器学习第二课 “单变量线性回归”
  6. 关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点
  7. 学习java之利用泛型访问自己定义的类
  8. python实现表格_python 实现绘制整齐的表格
  9. 第十一篇 浅拷贝和深拷贝
  10. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_10-CMS服务端工程搭建-导入基础工程...
  11. 3.MNIST数据集分类
  12. python安装文件或目录损坏_文件或目录损坏且无法读取的解决办法
  13. Paddle-Lite 安卓端部署
  14. sin30的c语言表达式,c语言sin30度怎么打
  15. 华为推送 坑点 自定义intent
  16. 印象笔记导出为pdf
  17. Linux/Centos nethogs 按进程监控网络带宽
  18. Linux安装fping和hping
  19. deeplearning.ai课程作业:Recurrent Neural Networks- Course 5 Week3
  20. 搜狗输入法繁简体切换

热门文章

  1. 六:SpringCloud-Config
  2. Codeforces 446C. DZY Loves Fibonacci Numbers【斐波那契+线段树】
  3. 字符串在Python中的本质是一个序列。 数字类型不是序列,不是可迭代对象,只能看做一个整体不可分割...
  4. HDOJ 1021-1025
  5. 关于爬虫数据的解析器设计
  6. iOS开发之Xcode常用调试技巧总结
  7. HDU 3359 高斯消元模板题,
  8. Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 ....
  9. C++ 模板何时被实例化
  10. Linux 2.6.39.1 Hello world 驱动总结