19260817比自然溢出都要好使

/*
把原串变成用26个01串表示,第i个串对应的字符是i
然后进行字符串hash,s和t双射的条件是26个串的hash值排序后一一相等

*/
#include<bits/stdc++.h>
using namespace std;
#define ll unsigned long long const ll p = ;
const int maxn = ;
const ll mod = ; char s[maxn];
int n,m;
ll ash[maxn][];
void init(){
for(int i=;i<;i++)
for(int j=;j<=n;j++){
int cur;
if(s[j]-'a'==i)cur=;
else cur=;
if(j>)ash[j][i]=(ash[j-][i]*p%mod+cur)%mod;
else ash[j][i]=cur;
}
} ll F[maxn]; int calc(int x,int y,int len){
ll a[]={},b[]={};
for(int i=;i<;i++){
a[i]=(ash[x+len-][i]-ash[x-][i]*F[len]%mod+mod)%mod;
b[i]=(ash[y+len-][i]-ash[y-][i]*F[len]%mod+mod)%mod;
}
sort(a,a+);sort(b,b+);
for(int i=;i<;i++)
if(a[i]!=b[i])return ;
return ;
} int main(){
F[]=;
for(int i=;i<maxn;i++)
F[i]=F[i-]*p%mod;
cin>>n>>m;
cin>>s+;
init();
while(m--){
int x,y,len;
cin>>x>>y>>len;x,y;
if(calc(x,y,len))puts("YES");
else puts("NO");
}
}

字符串hash+找模数——cf985F的更多相关文章

  1. 字符串hash入门

    简单介绍一下字符串hash 相信大家对于hash都不陌生 翻译过来就是搞砸,乱搞的意思嘛 hash算法广泛应用于计算机的各类领域,像什么md5,文件效验,磁力链接 等等都会用到hash算法 在信息学奥 ...

  2. 转载:字符串hash总结(hash是一门优雅的暴力!)

    转载自:远航休息栈 字符串Hash总结 Hash是什么意思呢?某度翻译告诉我们: hash 英[hæʃ] 美[hæʃ]n. 剁碎的食物; #号; 蔬菜肉丁;vt. 把…弄乱; 切碎; 反复推敲; 搞糟 ...

  3. 转载:字符串HASH

    转载自:Slager_Z 字符串Hash总结 Hash是什么意思呢?某度翻译告诉我们: hash 英[hæʃ] 美[hæʃ]n. 剁碎的食物; #号; 蔬菜肉丁;vt. 把…弄乱; 切碎; 反复推敲; ...

  4. 字符串Hash学习笔记

    [toc] # 以下内容作废,太多错误了,等我有时间重写 说一下什么是Hash,说白了就是把一大坨字符用一些神奇的数来表示,可以说是把字符加密了. 简单一点就是一个像函数一样的东西,你放进去一个值,它 ...

  5. [知识点]字符串Hash

    1.前言 字符串的几大主要算法都多少提及过,现在来讲讲一个称不上什么算法, 但是非常常用的东西——字符串Hash. 2.Hash的概念 Hash更详细的概念不多说了,它的作用在于能够对复杂的状态进行简 ...

  6. LA4671 K-neighbor substrings(FFT + 字符串Hash)

    题目 Source http://acm.hust.edu.cn/vjudge/problem/19225 Description The Hamming distance between two s ...

  7. POJ 3865 - Database 字符串hash

    [题意] 给一个字符串组成的矩阵,规模为n*m(n<=10000,m<=10),如果某两列中存在两行完全相同,则输出NO和两行行号和两列列号,否则输出YES [题解] 因为m很小,所以对每 ...

  8. Palindrome POJ - 3974 (字符串hash+二分)

    Andy the smart computer science student was attending an algorithms class when the professor asked t ...

  9. KMP替代算法——字符串Hash

    很久以前写的... 今天来谈谈一种用来替代KMP算法的奇葩算法--字符串Hash 例题:给你两个字符串p和s,求出p在s中出现的次数.(字符串长度小于等于1000000) 字符串的Hash 根据字面意 ...

随机推荐

  1. google cloud

    1.win10下安装gcloud SDK 必须设置环境变量CLOUDSDK_PYTHON指向执行文件而不是目录.

  2. leetcode-13双周赛-1256-加密数字

    题目描述:编码 方法一: class Solution(object): def encode(self, n): if n == 0: return "" n -= 1 A = ...

  3. 深入理解MAGENTO – 第八章 – 深入MAGENTO的系统配置

    (以下是原文) Last time we talked about Magento’s System Configuration system. If you missed it, you’ll wa ...

  4. 使用Vue和djangoframwork完成登录页面构建 001

    使用Vue和djangoframwork完成登录页面构建 001 环境的搭建 首先,我在我的电脑的F盘创建了一个文件夹 forNote,进入到这个文件夹中 F:\forNote> vue环境的搭 ...

  5. Android中的surfaceHolder.lockCanvas(null)返回为null详解

    对于新手学习SurfaceView的时候获取lockCanvas的时候总是返回null的问题很是纠结 canvas = surfaceHolder.lockCanvas(new Rect(0, 0, ...

  6. jQuery Validate (1)

    一.用前必备官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: http://jquery.bassist ...

  7. c go数据类型对应关系

    DataType C cgo sizeof--------------------+--------------------+------------------------------------- ...

  8. SPSS把一个数据样本随机分为两部分

    SPSS把一个数据样本随机分为两部分 1.  打开SPSS数据文件. 2.  选择DATA>SELECT CASES,打开"Select Cases"对话框 3. 选择&qu ...

  9. Vmware ESXi安装群晖Synology DSM 5.x

    简介 在Vmware ESXI中安装群晖Synology DSM 5.0 (4528) 文件准备 Vmware ESXi用户安装需要的文件 NB_x64_5032_DSM_50-4528_Xpenol ...

  10. 7. Jmeter-逻辑控制器介绍与使用

    逻辑控制器介绍与使用 如果(if)控制器 事物控制器 循环控制器 while controller critical section controller foreach控制器 include con ...