首页 > 其他分享 >[ABC329E]Stamp

[ABC329E]Stamp

时间:2023-11-19 17:11:49浏览次数:30  
标签:end Stamp ABC329E 位置 ## 印章 include define

image-20231119163531644

为了方便,我们记 \(T\) 为印章。

不可能出现上图的情况(或者说无效),区间都必须是左右端点严格递增的。

发现新增一个区间,无非就是放在上面/下面两种情况。

考虑用 \(f[i][j]\) 表示前 \(i\) 个字母全部匹配,且第 \(i\) 个字母恰好在最右侧的模式串的第 \(j\) 个位置是否可行。

三种方式:

  • 直接从 \(f[i-1][j-1]\) 过来,不用新的印章,如 AB->ABCf[3][3]|=f[2][2]

  • 用新的印章,盖在下层,如图,image-20231119165645588绿线表示新的位置和印章中对应的位置。可以发现绿线可以对应印章中的任意一个位置,所以对于状态 \(f[i][m]\)(如上图蓝框内已经有一个右端点在 \(i\) 的印章了。\(i\) 必须匹配最后一个位置,因为新凸出的部分就是 \(m\) 的下一个位置),可以转移到所有 \(f[i+1][j](1\le j\le m)\)。

  • 用新的印章,盖在上层,如图,image-20231119170218964可以发现,这种情况对最后的印章位置没有要求,且新的匹配位置就是第一个位置,即 \(f[i][1]\leftarrow f[i-1][j]\)。

以上的转移均需满足对应位置字母相同。(画绿线的位置必须等于目标串的位置)

初始状态 \(f[1][1]=[s[1]=t[1]]\)

\(O(n(m-1)+nm)=O(nm)\)。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define Ed for(int i=h[x];~i;i=ne[i])
#define Ls(i,l,r) for(int i=l,i##end=r;i<i##end;++i)
#define Rs(i,l,r) for(int i=l,i##end=r;i>i##end;--i)
#define Le(i,l,r) for(int i=l,i##end=r;i<=i##end;++i)
#define Re(i,l,r) for(int i=l,i##end=r;i>=i##end;--i)
#define L(i,l) for(int i=0,i##end=l;i<i##end;++i)
#define E(i,l) for(int i=1,i##end=l;i<=i##end;++i)
#define W(t) while(t--)
#define Wh while

const int N=200010,M=6;
int n,m;
bool f[N][M];
char s[N],t[M+1];
int main(){
	#ifndef ONLINE_JUDGE
	freopen("1.in","r",stdin);
	#endif
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m>>(s+1)>>(t+1);
	f[1][1]=s[1]==t[1];
	Le(i, 2, n)
		E(j, m)
			if(j==m){
				E(k, m)
					if(s[i]==t[k])f[i][k]|=f[i-1][j];
			}
			else{
				if(s[i]==t[1])f[i][1]|=f[i-1][j];
				if(s[i]==t[j+1])f[i][j+1]|=f[i-1][j];
			}
	cout<<(f[n][m]?"Yes":"No");
	return 0;
}

标签:end,Stamp,ABC329E,位置,##,印章,include,define
From: https://www.cnblogs.com/wscqwq/p/17842271.html

相关文章

  • E - Stamp
    题目链接: E-Stamp(atcoder.jp)题意:给定长为n的s串,m的t串,和一个长度为n的x串,问你能否操作任意次数的操作,每次操作都可以使x中长度为m的存在串变为t,最后使得变为n赛时没过,赛后有人发了原题,936.戳印序列-力扣(LeetCode),看了很久的题解,发现做法太巧妙了,把字符串转化为(图论)......
  • MySQL 8.0 目前仍旧没有解决timestamp时间戳溢出的问题
    在MySQL中,TIMESTAMP列的默认范围是从'1970-01-0100:00:01'到'2038-01-1903:14:07'。如果插入的时间值超出了该范围,MySQL会将其视为无效值,并将其设置为'0000-00-0000:00:00'。在MySQL8.0.35最新版本中,timestamp时间戳溢出的问题目前仍旧没有解决。如下图所示:为了解决这个问题,只......
  • oracle数据库 时间 TIMESTAMP(6)这是什么类型啊 怎么也插不进数据 ,是时间戳类型,参数6
    oracle数据库时间TIMESTAMP(6)这是什么类型啊怎么也插不进数据是时间戳类型,参数6指的是表示秒的数字的小数点右边可以存储6位数字是时间戳类型,参数6指的是表示秒的数字的小数点右边可以存储6位数字,最多9位。解决方法如下:1、时间戳的概念:它是一种时间表示方式,定义为从格林威......
  • timestamp(6)详解 在MySQL中,timestamp是一种时间戳类型。timestamp(6)是timestamp类型
    timestamp(6)详解在MySQL中,timestamp是一种时间戳类型。timestamp(6)是timestamp类型的一个子类型,表示精确到秒后6位小数的时间戳。它占用8个字节存储空间一、什么是timestamp(6)在MySQL中,timestamp是一种时间戳类型。timestamp(6)是timestamp类型的一个子类型,表示精确到秒后6......
  • MySQL timestamp查询
    MySQL是一个常用的关系型数据库管理系统,广泛应用于各个行业的数据存储和处理中。在MySQL中,timestamp是一种常用的数据类型,用于表示日期和时间。本文将介绍如何使用MySQL中的timestamp进行查询操作,并给出相应的代码示例。1.timestamp的概述timestamp是MySQL中的一种日期和时间类......
  • 日期转换工具类:由TimeStamp时间戳转换为日期格式的字符串
    importlombok.extern.slf4j.Slf4j;importorg.apache.commons.lang3.StringUtils;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;@Slf4jpublicclassDateTimeUtil{publicstaticfinalStringDATE_PATTERN="yyyy-......
  • 如何避免Mysql的timestamp的大坑
    如何避免Mysql的timestamp的大坑Mysql的timestamp类型讨论需要测试MYSQL的同学,可以点以下链接免费试用腾讯云mysql服务器https://curl.qcloud.com/tgnMO3KJ一.时间戳字段定义timestamp时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起到......
  • 我应该在MySQL中使用datetime还是timestamp数据类型?
    内容来自DOChttps://q.houxu6.top/?s=我应该在MySQL中使用datetime还是timestamp数据类型?你推荐使用datetime还是timestamp字段,为什么(使用MySQL)?我正在服务器端使用PHP。在MySQL中,时间戳通常用于跟踪记录的更改,并且每次更改记录时通常都会更新。如果您想存储特定值,则应使用......
  • mysql 日期格式为timestamp 和 datetime 使用month 函数取月份的区别
    1.DATE_FORMAT(data_dt,'%m')as`month`,使用这种方式无论什么类型的时间,取到的都是两位数。2.timstamp格式时间使用month()函数取出的月份只有一位。3.atetime格式时,month()函数获取到的就是两位数的月份。注意相关工具使用会不按预期执行,我的代码取到的月份为一位数,补没......
  • 【转载】How to solve the problem that getting timestamp from Mysql database is 8
    Thisarticleintroducestherelevantknowledgeof"howtosolvetheproblemofobtainingtimestampfromMysqldatabase8hoursearlierthanthenormaltime".Intheoperationprocessofactualcases,manypeoplewillencountersuchdifficulties.......