acwing 841 字符串哈希

简介: acwing 841 字符串哈希

活动 - AcWing

字符串哈希,对每一个样式的字符串找一个他的映射值,如果两个字符串的映射值相同,就说明这两个字符串相同。

刚学的刚学的,写的不好刚学的

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
typedef unsigned long long ULL ;
const int N = 1e5 +10, P = 131  ;
char a[N];
ULL h[N] , p[N] ;
ULL get(int l ,int  r) {
  return h[r] - h[l-1] * p[r-l+1] ; 
}
int main(){
  int n , m ;
  cin >> n >> m ;
  scanf("%s",a+1) ;
  p[0] = 1 ;
  for(int i = 1 ; i <= n ; i++){
    h[i] = h[i-1]*P + a[i] ;
    p[i] = p[i-1] * P ;
  }
  while(m --){
    int x1 , y1 , x2, y2 ;
    cin >> x1 >> y1 >> x2 >> y2 ;
    if(get(x1,y1) == get(x2,y2)) {
      cout << "Yes" << endl ;
    }else cout << "No" << endl ;
  }
}
目录
相关文章
|
3天前
acwing 898 数字三角形
acwing 898 数字三角形
13 2
|
4月前
|
C++
【洛谷 P1706】全排列问题 题解(全排列)
该问题要求按字典序输出从1到n的所有不重复排列。输入为整数n,输出为每行一个的数字序列,每个数字占5个宽度。样例输入3,输出6行全排列。代码使用C++,通过`next_permutation`函数生成所有排列。注意n的范围是1到9。
28 0
|
5月前
|
算法 C#
Leetcode算法系列| 5. 最长回文子串
Leetcode算法系列| 5. 最长回文子串
|
存储 算法 测试技术
【AcWing每日一题】4653. 数位排序
【AcWing每日一题】4653. 数位排序
111 0
|
人工智能
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
76 0
|
人工智能 移动开发 机器人
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
142 0
|
存储 人工智能 算法
AcWing<795. 前缀和>
前缀和算法简要总结
129 0
AcWing<795. 前缀和>