首页 > 其他分享 >codeforces.com/contest/1553/problem/B

codeforces.com/contest/1553/problem/B

时间:2023-06-07 22:34:24浏览次数:52  
标签:1553 contest int com sum rHash 字符串 problem 1010

简单字符串哈希

题意

给一个字符串s和t,问从s的某个位置开始,向右到某个点后再向左,顺序遍历到的字符形成的字符串可否为t。

思路

数据只有500,\(O(n^3)\)可过,枚举转折点,然后枚举开头和结尾。

代码

int n,m,k;

ull Hash[1010],rHash[1010],p[1010],rp[1010],sum;

void solve() 
{	
	string s,t;
	cin>>s>>t;
	n=s.size(),m=t.size();
	s=" "+s,t=" "+t;
	p[0]=1;
	sum=0;
	for(int i=1;i<=m;i++) sum=sum*M+t[i];
	for(int i=1;i<=n;i++) 
	{
		Hash[i]=Hash[i-1]*M+s[i];
		p[i]=p[i-1]*M;
	}
	rp[n+1]=1;
	rHash[n+1]=0;
	for(int i=n;i>=1;i--) 
	{
		rHash[i]=rHash[i+1]*M+s[i];
	}

	for(int k=(m+1)/2;k<=n;k++) 
	{
		for(int i=1;i<=k;i++) 
		{
			for(int j=1;j<=k;j++) 
			{
				if(k-i+1+k-j!=m) continue;
				ull x = Hash[k]-Hash[i-1]*p[k-i+1];
				ull y = rHash[j]- rHash[k]*p[k-j];
				ull z = x*p[k-j]+y;
				if(z==sum) {cout<<"YES\n";return;}
			}
		}
	}
	cout<<"NO\n";
}

标签:1553,contest,int,com,sum,rHash,字符串,problem,1010
From: https://www.cnblogs.com/LIang2003/p/17464763.html

相关文章

  • 解决使用yarn安装依赖出现“The engine "node" is incompatible with this module. Ex
    1、问题描述某天在使用yarn安装依赖的时候,突然出现如下错误导致安装依赖终止:Theengine"node"isincompatiblewiththismodule.Expectedversion"^14.18.0||^16.14.0||>=18.0.0".Got"17.9.0"2、解决办法使用如下命令忽略错误:yarnconfigsetignore-enginestr......
  • Exploiting Positional Information for Session-based Recommendation
    目录概符号说明Forward/Backward-awarenessDualPositionalEncodingQiuR.,HuangZ.,ChenT.andYinH.Exploitingpositionalinformationforsession-basedrecommendation.ACMTransactionsonInformationSystems,2021.概本文讨论了一些常用positionalencodi......
  • 【Checkpoint】Command for log's checkpoint - SQLserver, Oracle, PostgreSQL
    文档引子最近,SQLserver环境中的SQLalwayson因事务爆满导致磁盘持续告警,通过这次事件,记载下SQLserverAG的事务日志处理的正确方式,同时也把Oracle以及PG的相关的checkpoint问题一并做个简单的总结,并且只从结果的角度给出过程,至于具体的理论,请移步官方文档查阅。SQLserver检......
  • compiler expression pattern match
     编译器中经常需要用到patternmatch。那么如何实现呢?比较直观的方法是使用递归。以patternmatch:y=a*(b+c)为例。首先,将其解析成一个抽象语法树:*a+bc其次,递归match:match(y,pattern)=>match(y,'*a+bc')左边是待检测的string,右边的是pattern。只要......
  • Python正则表达式学习(3)——re.compile()
    re.compile(pattern,flags=0)将正则表达式pattern编译为正则表达式对象,可用于使用其match()和search()方法进行匹配。顺序:prog=re.compile(pattern)result=prog.match(string)等价于:result=re.match(pattern,string)但是当单个程序中的表达式被多次使用时,使用re.comp......
  • Docker for Windows 中文文档(2)——Set up tab completion in PowerShell
    在PowerShell中设置tab完成如果您希望为Docker命令提供方便的选项卡完成,可以按如下方式安装posh-dockerPowerShell模块。1.启动“elevated”PowerShell(即以管理员身份运行)。为此,请搜索PowerShell,右键单击,然后选择以管理员身份运行。当系统询问您是否允许此应用更改您的设备时,......
  • U盘安装ubuntu 16.04 遇到 gfxboot.c32:not a COM32R image boot 的解决方法
    从U盘启动的时候出现了gfxboot.c32:notaCOM32Rimage的问题,经过研究发现按下Tab键,会出现livelive-installcheckmemtesthdmainmenuhelp.输入live后会进入试用界面,live-install会进入安装界面。参考资料......
  • docker 操作nginx命令+docker-compose常用命令及yml文件编写
    docker-compose常用命令及yml文件编写https://blog.csdn.net/doubiy/article/details/118997661 https://docs.docker.com/compose/1.观察下载容器镜像过程dockerrun-dnginx:latest-d表示当前终端的后台运行nginx:latest就是最新的nginx版本2.访问容器中的ngi......
  • Git commit –amend 修改上一次 commit message
    Gitcommit–amend修改上一次commitmessage#gitcommit-amend-m"newmessage"但是不能是已经push的提交参考资料1、git修改已提交的内容2、git之修改上次提交备注......
  • Establishing SSL connection without server's identity verification is not recomm
    WARN:EstablishingSSLconnectionwithoutserver’sidentityverificationisnotrecommended.AccordingtoMySQL5.5.45+,5.6.26+and5.7.6+requirementsSSLconnectionmustbeestablishedbydefaultifexplicitoptionisn’tset.Forcompliancewithexisti......