CodeForces - 985F Isomorphic Strings(哈希)

字符串Hash例题详解 1.Codeforces 961F k-substrings 题目大意:给定一个字符串,对于它的所有子串  k−substrings  \;k-substrings\;k−substrings,问其前缀和后缀相同的最大长度,且长度必须为奇数,如果不存在则为  −1  \;-1\;−1。  k−substrings  \;k-substrings\;k−substrings是这样定义的:对于每个... 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

给长度为n的字符串,查询m次,每次查询 s [ x ] ~ s [ x + l - 1 ] 的子串与 s [ y ] ~ s [ y + l - 1 ] 的子串是不是同构的
(例如 “aababc” and “bbcbcz” 就是同构的,“aab” and “bbb” 就不是)

思路

拿"aababc" and “bbcbcz” 来说,将两个字符串转换为 x 进制的表示方式

“aababc”: a x 5 + a x 4 + b x 3 + a x 2 + b x 1 + c x 0 = a ( x 5 + x 4 + x 2 ) + b ( x 3 + x 1 ) + c ( x 0 ) ax^5+ax^4+bx^3+ax^2+bx^1+cx^0=a(x^5+x^4+x^2)+b(x^3+x^1)+c(x^0) ax5+ax4+bx3+ax2+bx1+cx0=a(x5+x4+x2)+b(x3+x1)+c(x0)

“bbcbcz”: b x 5 + b x 4 + c x 3 + b x 2 + c x 1 + z x 0 = b ( x 5 + x 4 + x 2 ) + c ( x 3 + x 1 ) + z ( x 0 ) bx^5+bx^4+cx^3+bx^2+cx^1+zx^0=b(x^5+x^4+x^2)+c(x^3+x^1)+z(x^0) bx5+bx4+cx3+bx2+cx1+zx0=b(x5+x4+x2)+c(x3+x1)+z(x0)

两者的特点就是都是由 ( x 5 + x 4 + x 2 ) + ( x 3 + x 1 ) + ( x 0 ) (x^5+x^4+x^2)+(x^3+x^1)+(x^0) (x5+x4+x2)+(x3+x1)+(x0)组成,唯一区别就是前面的系数,也就是字母不同,但若是系数等于 1 ,两者就相同了。因此,我们可以对每一个字母求字符串哈希值。
对于每次询问,将 26 个字母在子串中的哈希值存起来,若是两个子串排序后的序列一样,说明两个子串同构,否则不同构。

代码
// Problem: Isomorphic Strings
// Contest: Virtual Judge - CodeForces
// URL: https://vjudge.net/problem/CodeForces-985F
// Memory Limit: 262 MB
// Time Limit: 3000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define base 233 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e6+10;
const int mod=1e9+7;
const double eps=1e-9;
const int N=5e3+10;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/

int n,m;
ll p[maxn],h[26][maxn];
string s;

int main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
	cin>>n>>m;
	p[0]=1;
	for(int i=1;i<=n;i++)
		p[i]=(p[i-1]*base)%mod;
	cin>>s;
	for(int i=0;i<26;i++)
		for(int j=1;j<=n;j++)
			h[i][j]=(h[i][j-1]*base+((s[j-1]-'a')==i))%mod;
	while(m--)
	{
		int x,y,l;
		cin>>x>>y>>l;
		vector<int>v1;
		vector<int>v2;
		for(int i=0;i<26;i++)
		{
			v1.push_back(((h[i][x+l-1]-h[i][x-1]*p[l])%mod+mod)%mod);
			v2.push_back(((h[i][y+l-1]-h[i][y-1]*p[l])%mod+mod)%mod);
		}
		sort(v1.begin(),v1.end());
		sort(v2.begin(),v2.end());
		if(v1==v2) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
    return 0;
} 
从零实现地震波场模拟:交错网格有限差分法核心代码精讲 本文详细介绍了从零实现地震波场模拟的核心技术,重点讲解了交错网格有限差分法的实现过程。通过速度-应力弹性波方程的离散化处理,结合代码实例演示了应力与速度更新的关键步骤,并分享了震源加载、稳定性条件等实用技巧,为计算地球物理学研究提供实践指导。 阅读详情

相关推荐

【面试经验】大疆笔试-计算机视觉算法B卷

3、a=np.random.randn(3,3) b=np.random.randn(3,1) ,那么c=a*b的维度应该是:*是元素乘法或者torch.mul,@才是矩阵乘法或者torch.matmul,不会触发广播机制;8、将分辨率降低一半时,精标定内参(fx、fy、cx、cy、k1、k2、k3)焦距、光心、畸变系数将分别变成(fx、fy、cx/2、cy/2、k1、k2、k3),只能搜到光心变成一半,畸变系数不变。12、KLT算法在频闪光源、重复纹理、高速机动、环境照度低的情况下效果显著下降。

litterfinger的博客 1444

CodeForces - 985F Isomorphic Strings(字符串哈希)

题目链接:点击查看 题目大意:首先规定同构字符串,若字符串s和字符串t互为同构字符串,则必须满足: 两个字符串长度相同 s中的字符种类数与t中的字符种类数相同 s中的每一个字母在t中都有对应,且必须是一对一的映射关系 举个很简单的例子,wwaaa和aaccc是同构字符串,aababc和bbcbcz也是同构字符串 现在给出m个询问,每次询问给出 x y len,问长度为len,分别以 x ...

Falcon的博客 664

高功率半导体叠阵激光快慢轴准直优化技术解析

本文深入解析了高功率半导体叠阵激光快慢轴准直优化技术。针对其光束发散特性,文章系统阐述了从光源建模、光学仿真到透镜选型与参数匹配的完整工程流程,并强调了光束整形对于提升加工精度与效率的核心作用。通过优化快慢轴准直,可将原始散光转变为能量集中、均匀性好的高质量光束,为后续工业应用奠定基础。

php55的博客 713

CodeForces985F - Isomorphic Strings(同构字符串+哈希)

Description: You are given a string s of length n consisting of lowercase English letters. For two given strings s and t, say S is the set of distinct characters of s and T is the set of distinct char...

weixin_43880485的博客 512

手把手教你为STM32设备生成自定义MAC地址(基于芯片ID的5种算法对比)

本文详细介绍了基于STM32芯片ID生成自定义MAC地址的5种算法,包括直接截取、异或折叠、CRC32哈希、自定义混合运算及SHA-256摘要。通过对比分析各算法的计算复杂度、唯一性及适用场景,帮助嵌入式开发者根据项目规模与资源,选择最合适的方案,确保设备MAC地址的唯一性与合规性。

weixin_29170327的博客 527

瑞数6.5逆向实战:手把手教你用RPC搞定cookie sign加密(附环境补全技巧)

本文深入解析瑞数6.5逆向实战,重点探讨如何结合环境补全与RPC调用技术来应对其动态加密机制。文章详细介绍了环境指纹采集、双重验证等核心防护原理,并提供了基于Puppeteer的RPC实现方案,手把手教你搞定cookie sign加密,附有实用的环境补全技巧与完整代码示例。

weixin_29315091的博客 1273

Codeforces #985F: Isomorphic Strings 题解

感觉虽然是edu round的倒数第二题但还蛮简单的 我们分析那个同构的定义,可以理解为“该一样的字符要一样,该不一样的字符要不一样”,那么对于每一种字符我们想一种办法来表示他在子串中所有的出现位置(像一张有黑点的纸条),然后看看两个串能不能配对就好 把一个01串转换成一个数,我刚开始想的是高精度用2n2n2^n表示,然而复杂度是炸的,然后我发现自己蠢了,用字符串哈希就可以了 为了保险我写了...

IcePrincess_1968's World 596

深度伪造检测实战:轻量级频域特征 pipeline 部署指南

深度伪造检测(deepfake detection)是多媒体内容安全的核心技术,其本质是通过建模生成式篡改在像素与频域留下的微弱异常痕迹。传统端到端大模型虽在标准数据集上表现优异,却因训练域与真实场景失配、计算开销高、缺乏可解释性而难以落地。本文聚焦于工程可复现的实践路径,提出‘人脸定位→频域伪造特征提取(Xception-FCN + Frequency-Aware Masking)→轻量分类决策’三段式解耦架构,兼顾精度、延迟与可解释性。该方案已在边缘设备(Jetson Orin NX)实现单帧<48ms

weixin_33437929的博客 306

Windows 11终极优化指南:用Win11Debloat让你的系统性能提升51%

还在为Windows 11系统运行缓慢、广告推送不断而烦恼吗?Win11Debloat是一款完全免费的开源Windows优化工具,专为Windows 10和Windows 11设计,能够一键清理系统垃圾、移除预装应用、禁用隐私追踪,让你的电脑重获新生。这款轻量级PowerShell脚本工具通过简单易用的界面,帮助用户快速优化系统设置,提升整体性能表现。 ## 痛点分析:为什么你的Windows系

gitblog_00599的博客 453

红帽RHCE考试下午-RHCE (RH294)任务概览[2021最新版]

RH294任务概览 考试时间4个小时,6台虚拟机,15道题 原来通过脚本或者集群做的题现在都需要使用playbook实现 考试时大概有6台虚拟服务器,都已经做好了互相的免密 做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证 考试时需要将6台虚拟服务器在考试环境全部开启,物理机界面点击左侧按钮启动 考试时Ansible所有playbook都放在普通用户目录中且都以普通用户执行 注意:考试时一定注意要求将playbook放在哪个用户的家目录中,就需要用指定的户登录做题!

SunMy的博客 5618

redhawk:STA timing data file解析

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?STA timing data file分为以下几个部分:• Header• Name Map• Footer这部分报告设计的基本信息,例如文件类型,设计名称,分隔符等。...

m0_61544122的博客 1153

CodeForces - 985F Isomorphic Strings(字符串Hash哈希)

F. Isomorphic Strings time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output You are given a string s of length n consisting of lowercas...

LP_Cong 787

【MATLAB例程】基于TDOA定位(两步最小二乘)的三维轨迹定位和UKF滤波,TDOA的锚点可以自适应,附完整代码

该代码实现了一种**融合TDOA(到达时间差)定位与无迹卡尔曼滤波(UKF)**的动态目标轨迹跟踪方案,适用于三维空间中的移动目标定位与滤波。TDOA定位:通过两步加权最小二乘法(TS-WLS)解算目标位置。UKF滤波:对定位结果进行非线性滤波,抑制噪声并提升轨迹平滑性。多维度误差分析:对比滤波前后误差,评估算法性能。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 675

codeforces 985 F. Isomorphic Strings(hash)

题目链接:http://codeforces.com/contest/985/problem/F思路:对每个字母hash,只要每一段区间字母hash值排序后相同,那么就是一一映射。ull这题被卡了好像。。。。网上说这个base和mod好点不知道真的假的,存着再说。base = 163 moder = 9905411 || 1e9+7#include &lt;cstdio&gt; #include ...

llmxby 306

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Codeforces 985F Isomorphic Strings 字符串哈希

F. Isomorphic Stringstime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a string s of length n consisting of lowercase English letters....

J. Cole 488

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[究极好题][字符串哈希]Isomorphic Strings Codeforces985F

You are given a stringsof lengthnconsisting of lowercase English letters. For two given stringssandt, saySis the set of distinct characters ofsandTis the set of distinct characters oft. The stringssandtareisomorphicif their lengths are...

Cloth的博客 254

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Hash题集

【字符串hash】CodeForces - 985FIsomorphic Strings 题目大意: 给定一个母串,然后让你判断指定两个区间的字符子串是否存在字母之间相互映射的关系。 解题分析:因为有$m$次询问,所以先预处理一下母串的信息,将母串上的字符用26个01串维护(每个01串对应每个字母在母串中的存在情况),并且计算每个01串的hash值,然后每次询问,对于每个字符...

weixin_30670925的博客 203

CodeForces 985 F Isomorphic Strings

Isomorphic Strings 题意:给你一个长度为n的字符串, m次询问, 每次输入一个s, t, l, 是的 [s,s+l-1] 与 [t,t+l-1] 里面的字符一一对应。并且只能一对一 不能一对多也不能多对一。 题解:Hash求解, 对于这段区间, 找到某个字符对应的字符, 将Hash值转变过去, 最后判断相不相等。 代码: 1 #include<b...

dengpangbu3703的博客 151

CF858F Isomorphic Strings(Hash)

题目链接:http://codeforces.com/contest/985/problem/F https://acm.njupt.edu.cn/problem/CF985F 题意: 给出两个相同长度的字符串,其中a串每一个x都有唯一的f(x)=y转化b串,同时b串中每一个y都有唯一的f(y)=x转化为a串 解题思路: 利用Hash,对26个字母在字符串中的位置赋予Hash值 下面我直接引用我...

Buyi的博客 297

codeforces 985 F. Isomorphic Strings

标签: 字符串hash 题目链接 https://codeforces.com/contest/985/problem/F 题意 首先定义两个长度相等字符串a,b同构,当且仅当a中的每个字母,b中只存在一个字母与之对应,并且两个字母出现位置要完全一致,a,b反过来也要满足。 给定一个长度为\(2 \times 10^5\)的字符串s,有很多次询问。每次询问s从x位置开始的长度为l的字串与从y开...

weixin_30814319的博客 156

CodeForces985F -- Isomorphic Strings

F. Isomorphic Stringstime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a stringsof lengthnconsisting of lowe...

weixin_30760895的博客 122

Codeforces 985 F - Isomorphic Strings

F - Isomorphic Strings 思路:字符串hash 对于每一个字母单独hash 对于一段区间,求出每个字母的hash值,然后排序,如果能匹配上,就说明在这段区间存在字母间的一一映射 代码: #include<bits/stdc++.h> using namespace std; #define fi first #define se second ...

weixin_33932129的博客 93

CodeForces - 985F Isomorphic Strings

假如两个区间的26的字母出现的位置集合分别是 A1,B1,A2,B2,....., 我们再能找到一个排列p[] 使得 A[i] = B[p[i]] ,那么就可以成功映射了。 显然集合可以直接hash,排序一下hash值就可以判断是否匹配了。。。。 虽然不知道为什么要卡19260817,但反正我是坚决不写双hash的,最后随便换了一个大模数(甚至都不是质数2333...

weixin_30872671的博客 130

contest985F. Isomorphic Strings+二重哈希+幂次方构造

F. Isomorphic Stringstime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a string s of length n consisting of lowercase English letters....

ujn20161222的博客 299

Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings(Hash)

题目链接:http://codeforces.com/contest/985/problem/F按照字符转为01串,直接Hash就好,然后判断的时候,直接排序判断,就可以消除字符之间的区别。代码:#include&lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; const int MAXN=2e5+5; const i...

bibibibi的博客 218
上一篇: CodeForces - 706D Vasiliy‘s Multiset( 01字典树)
下一篇: CodeForces - 7D Palindrome Degree ( 哈希 )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值