当前位置:网站首页>【集训DAY4】询问【Hash】
【集训DAY4】询问【Hash】
2022-08-09 22:35:00 【VL——MOESR】
思路:
我们把字符串拆成26个01穿来记录每个字符的位置
然后用字符串hash判断就行了
c o d e code code
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int n, m;
char s[200010];
unsigned long long h[26][200010], p[200010], a[26], b[26];
unsigned long long get_(int i, int l, int r) {
return h[i][r] - h[i][l - 1] * p[r - l + 1];
}
int main() {
scanf("%d%d", &n, &m);
scanf("%s", s + 1);
p[0] = 1;
for(int i = 1; i <= n; i ++) p[i] = p[i - 1] * 7;
for(int i = 0; i < 26; i ++)
for(int j = 1; j <= n; j ++)
h[i][j] = h[i][j - 1] * 7 + (s[j] == 'a' + i) * 3;
while(m --) {
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
for(int i = 0; i < 26; i ++) {
a[i] = get_(i, x, x + z - 1);
b[i] = get_(i, y, y + z - 1);
}
sort(a, a + 26);
sort(b, b + 26);
bool flag = 1;
for(int i = 0; i < 26; i ++)
if(a[i] != b[i]) {
flag = 0;
break;
}
if(flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}
边栏推荐
猜你喜欢
2022年最新《谷粒学院开发教程》:10 - 前台支付模块
【云原生】一文讲透Kubevela addon如何添加腾讯Crane
How to know the computer boot record?
为什么刀具数据库无法打开?
高手这样看现货白银走势图
【面试高频题】可逐步优化的链表高频题
Redis集群
Gartner's global integrated system market data tracking, hyperconverged market growth rate is the first
Comprehensive analysis of FPGA basics
kubesphere
随机推荐
深入理解多线程(第一篇)
HStreamDB v0.9 发布:分区模型扩展,支持与外部系统集成
68.qt quick-qml多级折叠下拉导航菜单 支持动态添加/卸载 支持qml/widget加载等
JS基础笔记-关于对象
Leetcode 530. 二叉搜索树的最小绝对差
【JZOF】77 Print binary tree in zigzag
Click: 377. Combined Sum Ⅳ
伦敦银行情中短线的支撑和阻力位
matplotlib散点图颜色分组图例
多线程是同时执行多个线程的吗
Travel with Shengteng: See all the AI attractions in Jinling City in one day
Click: 518. Change Exchange II
杭电多校-Counting Stickmen-(思维+组合数+容斥)
Cmake 用法记录
Mysql/stonedb - slow SQL - 2022-08-09 Q16 analysis
SRv6性能测量
linux上使用docker安装redis
The latest "Grain Academy Development Tutorial" in 2022: 10 - Front-end payment module
什么是平面文件数据库? 如何导入多种格式的文件:DSV、JSON、XML?
经济衰退即将来临前CIO控制成本的七种方法