bzoj5073
dp
字符串dp不太会啊。。。
这种序列和子串的匹配一般设两个状态,dp[i][j]表示当前s匹配到i,t匹配到j的...,g[i][j]表示当前s匹配到i,t匹配到j,i,j必须匹配的...,noip2015的子串也是这个套路,这道题是设最远能匹配到哪里,贪心显然,转移具体看代码,注意一定要把条件和转移匹配清楚。。。
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + ;
int n, m, x;
char s[N], t[N];
int dp[N][], g[N][];
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int mx = ;
memset(dp, , sizeof(dp));
memset(g, , sizeof(g));
scanf("%d%d%d%s%s", &n, &m, &x, s + , t + );
for(int j = ; j <= x; ++j)
for(int i = ; i <= n; ++i)
{
dp[i][j] = dp[i - ][j];
if(s[i] == t[g[i - ][j] + ]) g[i][j] = g[i - ][j] + ;
// if(s[i] == t[g[i - 1][j - 1] + 1]) g[i][j] = max(g[i][j], g[i - 1][j - 1] + 1);
if(s[i] == t[dp[i - ][j - ] + ]) dp[i][j] = max(dp[i][j], dp[i - ][j - ] + ), g[i][j] = max(g[i][j], dp[i - ][j - ] + );
dp[i][j] = max(dp[i][j], g[i][j]);
mx = max(mx, max(dp[i][j], g[i][j]));
}
if(mx == m) puts("YES"); else puts("NO");
}
return ;
}
bzoj5073的更多相关文章
- BZOJ5073 小A的咒语(动态规划)
设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]→ ...
- 【BZOJ5073】[Lydsy十月月赛]小A的咒语 DP(错解)
[BZOJ5073][Lydsy十月月赛]小A的咒语 题解:沙茶DP,完全不用后缀数组. 用f[i][j]表示用了A的前i个字符,用了j段,最远能匹配到哪.因为显然我们能匹配到的地方越远越好,所以我们 ...
- 【bzoj5073】[Lydsy1710月赛]小A的咒语 后缀数组+倍增RMQ+贪心+dp
题目描述 给出 $A$ 串和 $B$ 串,从 $A$ 串中选出至多 $x$ 个互不重合的段,使得它们按照原顺序拼接后能够得到 $B$ 串.求是否可行.多组数据. $T\le 10$ ,$|A|,|B| ...
- [BZOJ5073][Lydsy1710月赛]小A的咒语
bzoj description 你有一个\(A\)串和\(B\)串,你需要判断是否可以在\(A\)串中拆出\(x\)个互不相交的子串,使它们按顺序拼在一起可以组成\(B\)串. \(|A|,|B|\ ...
- [BZOJ5073] [Lydsy1710月赛]小A的咒语 后缀数组+dp+贪心
题目链接 首先这种题一看就是dp. 设\(dp[i][j]\)表示\(A\)序列中到\(i\)位之前,取了\(j\)段,在\(B\)中的最长的长度. 转移也比较简单 \[ dp[i][j] \to d ...
随机推荐
- DDCTF2019逆向分析前俩题WriteUP
DDCTF2019 笔者做了前俩道题.冷不丁过去一个月了.现在在此做一下WriteUp:题目链接: 1:题目1 2:题目2 reverse1:writeup: 1.程序打开后如下所示 2.查壳结果为U ...
- 多个Nginx如何实现集群(没具体方案,只是初步探究)
场景: Nginx+Web服务器可以实现负载均衡,但是一台Nginx也是有限的,如果并非量高的话,在他的上层如何实现负载均衡. 如果是DNS或者CDN的话,建多个机房,势必有多个机房数据同步的问题. ...
- 基于R-Tree的最近邻查询
转自基于R-Tree的最近邻查询 BAB(Branch.and.Band)算法是由Nick Roussopoulousnl等人于1995年提出的,是最早的基于R.树的静态最近邻查询算法.该算法使用MI ...
- 体验Windows 2008 R2的RemoteApp
[说明]这是<中小企业虚拟机解决方案大全>一书中部分章节的摘抄.该书预计于2009年12月初由<电子工业出版社>出版,敬请期待! 通过远程桌面服务,组织可以为用户提供随时随 ...
- Linux网络驱动架构
网络设备介绍 网络设备是计算机体系结构中必不可少的一部分,处理器如果想与外界通信,通常都会选择网络设备作为通信接口.众所周知,在 OSI(Open Systems Interconnection,开放 ...
- C++学习总结 复习篇2
延续上一小节内容:下面继续讲解虚函数和多态 虚函数和多态 基类指针可以指向任何派生类的对象,但是不能调用派生类对象的成员. 但是,基类可以调用覆盖了虚函数的函数.(现在调用将来,这有问题,说明现在 ...
- HBase技术简介
一.HBase简介 HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. ...
- 技术发展晴雨表 细数CPU接口10年变迁
http://cpu.zol.com.cn/160/1602240_all.html#p1602240 本文导航 第1页:10年磨10剑 CPU发展突飞猛进 第2页:462与423对垒 开启CPU竞争 ...
- Intel processor brand names-Xeon,Core,Pentium,Celeron----Celeron
http://en.wikipedia.org/wiki/Celeron Celeron From Wikipedia, the free encyclopedia Celeron Produ ...
- Python 002- 爬虫爬取淘宝上耳机的信息
参照:https://mp.weixin.qq.com/s/gwzym3Za-qQAiEnVP2eYjQ 一般看源码就可以解决问题啦 #-*- coding:utf-8 -*- import re i ...