C++:字符串哈希

字符串哈希

給定一個長度為 n n n的字符串,再給定 m m m個詢問,每個詢問包含四個整數 l 1 , r 1 , l 2 , r 2 l_1,r_1,l_2,r_2 l1?,r1?,l2?,r2?,請你判斷 [ l 1 , r 1 ] [l_1,r_1] [l1?,r1?] [ l 2 , r 2 ] [l_2,r_2] [l2?,r2?]這兩個區間所包含的字符串子串是否完全相同。
字符串中只包含大小寫英文字母和數字

輸入格式

第一行包含整數 n n n m m m,表示字符串長度和詢問次數
第二行包含一個長度為 n n n的字符串,字符串中只包含大小寫英文字母和數字
接下來 m m m行,每行包含四個整數 l 1 , r 1 , l 2 , r 2 l_1,r_1,l_2,r_2 l1?,r1?,l2?,r2?,表示一次詢問所涉及的兩個區間
注意,字符串的位置從1開始編號

輸出格式

對于每個詢問輸出一個結果,如果兩個字符串子串完全相同則輸出“Yes”,否則輸出“ No”
每個結果占一行

數據范圍

1 ≤ n , m ≤ 1 0 5 1\le n,m\le 10^5 1n,m105

輸出樣例

8 3
aabbaabb
1 3 5 7
1 3 6 8
1 2 1 2

輸出樣例

Yes
No
Yes

AC代碼

#include<iostream>
using namespace std;typedef unsigned long long ULL;const int N = 1e5 + 10, P = 131;int n, m;
char str[N];
ULL h[N], p[N];ULL get(int l, int r) {return h[r] - h[l - 1] * p[r - l + 1];
}int main() {scanf("%d%d%s", &n, &m, str + 1);p[0] = 1;for(int i = 1; i <= n; i++) {p[i] = p[i - 1] * P;h[i] = h[i - 1] * P + str[i];}while(m--) {int l1, r1, l2, r2;scanf("%d%d%d%d", &l1, &r1, &l2, &r2);if(get(l1, r1) == get(l2, r2)) puts("Yes");else puts("No");}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42733.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42733.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42733.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

“深入理解Java虛擬機(JVM):背后的工作原理解析“

標題&#xff1a;深入理解Java虛擬機&#xff08;JVM&#xff09;&#xff1a;背后的工作原理解析 摘要&#xff1a;本文將深入探討Java虛擬機&#xff08;JVM&#xff09;的工作原理&#xff0c;包括內存管理、垃圾回收、即時編譯器等關鍵概念&#xff0c;以及如何優化代碼以…

React 18 更新 state 中的數組

參考文章 更新 state 中的數組 數組是另外一種可以存儲在 state 中的 JavaScript 對象&#xff0c;它雖然是可變的&#xff0c;但是卻應該被視為不可變。同對象一樣&#xff0c;當想要更新存儲于 state 中的數組時&#xff0c;需要創建一個新的數組&#xff08;或者創建一份已…

vue2,使用element中的Upload 上傳文件,自定義上傳http-request上傳,上傳附件支持多選,多個文件只發送一次請求

復制直接使用&#xff0c;組件根據multiple是否多選來返回附件內容&#xff0c;支持多選就返回數據附件&#xff0c;則返回一個附件對象。 //uploadFiles.vue<template><div><el-uploadclass"avatar-uploader"action"#":accept"accep…

對比 VPN 與遠程桌面軟件,為什么遠程桌面更優越

數字格局不斷演變&#xff0c;我們的工作和連接方式也在不斷變化。企業紛紛轉向遠程運營&#xff0c;有關推進向遠程過渡的最佳技術的爭論從未停止。爭論的焦點通常是虛擬專用網絡&#xff08;VPN&#xff09;和遠程桌面軟件。 長期以來&#xff0c;VPN 一直被用作訪問公司網絡…

Linux上,出現依賴無法下載時,如何解決?

1.vim 編輯 /etc/profile 文件&#xff1a; vim /etc/hosts刪除/etc/hosts文件中已有的內容&#xff0c;添加如下內容&#xff0c; 140.82.112.3 github.com&#xff1a;wq保存退出&#xff1b; 2.使配置生效 systemctl restart network然后&#xff0c;就可以愉快&#x1…

【C++】函數指針

2023年8月18日&#xff0c;周五上午 今天在B站看Qt教學視頻的時候遇到了 目錄 語法和typedef或using結合我的總結 語法 返回類型 (*指針變量名)(參數列表)以下是一些示例來說明如何聲明不同類型的函數指針&#xff1a; 聲明一個不接受任何參數且返回void的函數指針&#xf…

【Flink】Flink窗口觸發器

數據進入到窗口的時候,窗口是否觸發后續的計算由窗口觸發器決定,每種類型的窗口都有對應的窗口觸發機制。WindowAssigner 默認的 Trigger通常可解決大多數的情況。我們通常使用方式如下,調用trigger()方法把我們想執行觸發器傳遞進去: SingleOutputStreamOperator<Produ…

kubernetes--技術文檔--基本概念--《10分鐘快速了解》

官網主頁&#xff1a; Kubernetes 什么是k8s Kubernetes 也稱為 K8s&#xff0c;是用于自動部署、擴縮和管理容器化應用程序的開源系統。 它將組成應用程序的容器組合成邏輯單元&#xff0c;以便于管理和服務發現。Kubernetes 源自Google 15 年生產環境的運維經驗&#xff0c…

《一個操作系統的實現》windows用vm安裝CentOS——從bochs環境搭建到第一個demo跑通

vm安裝CentOS虛擬機帶有桌面的版本。su輸入密碼123456。更新yum -y update 。一般已經安裝好后面這2個工具&#xff1a;yum install -y net-tools wget。看下ip地址ifconfig&#xff0c;然后本地終端連接ssh root192.168.249.132輸入密碼即可&#xff0c;主要是為了復制網址方便…

Netty+springboot開發即時通訊系統筆記(四)終

實時性 1.線程池多線程&#xff0c;把消息同步給其他端和對方用戶&#xff0c;其中數據持久化往往是最浪費時間的操作&#xff0c;可以使用mq異步存儲&#xff0c;因為其他業務不需要拿著整條數據&#xff0c;只需要這條數據的id進行操作。 2。消息校驗前置&#xff0c;放在t…

Vim的插件管理器之Vundle

1、安裝Vundle插件管理器 Vim可以安裝插件&#xff0c;但是需要手動安裝比較麻煩&#xff0c;Vim本身沒有提供插件管理器&#xff0c;所以會有很多的第三方的插件管理器&#xff0c;有一個vim的插件叫做 “vim-easymotion”&#xff0c;在它的github的安裝說明里有列出對于不同…

GRPC 學習記錄

GRPC 安裝 安裝 grpcio、grpcio-tools、protobuf、 pip install grpcio -i https://pypi.tuna.tsinghua.edu.cn/simple pip install grpcio-tools -i https://pypi.tuna.tsinghua.edu.cn/simple pip install protobuf -i https://pypi.tuna.tsinghua.edu.cn/simple常用類型 p…

Minio知識點+linux下安裝+面試總結

一 Minio簡介 MinIO 是一個基于Apache License v2.0開源協議的對象存儲服務。它兼容亞馬遜S3云存儲服務接口&#xff0c;非常適合于存儲大容量非結構化的數據&#xff0c;例如圖片、視頻、日志文件、備份數據和容器/虛擬機鏡像等&#xff0c;而一個對象文件可以是任意大小&…

Apache Doris 入門教程31:計算節點

需求場景? 目前Doris是一個典型Share-Nothing的架構, 通過綁定數據和計算資源在同一個節點獲得非常好的性能表現. 但隨著Doris計算引擎性能持續提高, 越來越多的用戶也開始選擇使用Doris直接查詢數據湖數據. 這類場景是一種Share-Disk場景, 數據往往存儲在遠端的HDFS/S3上, 計…

msvcp110.dll是什么意思,msvcp110.dll丟失的解決方法

裝好軟件或游戲之后&#xff0c;一打開就跳出各種報錯信息的情況小伙伴一定見過&#xff0c;其中缺少各種msvcp110.dll文件最常見。小伙伴們一定奇怪&#xff0c;用得好好的電腦&#xff0c;怎么會缺文件呢&#xff1f;為啥其他游戲/應用就沒事呢&#xff1f;其實這些“丟失”的…

visual studio 2022配置

前提&#xff1a;我linux c 開發 一直在使用vscode 更新了個版本突然代碼中的查找所用引用和變量修改名稱不能用了&#xff0c;嘗試了重新配置clang vc都不行&#xff0c;估計是插件問題&#xff0c;一怒之下改用visual studio 2022 為了同步2個IDE之間的差別&#xff0c;目前…

QT的核心——信號與槽

目錄 回顧C 語言信號 1、信號與槽 2、關聯信號與槽 2.1自動關聯信號與槽 2.2手動關聯信號與槽 2.3斷開信號與槽 3、自定義信號 3.1自定義信號使用條件 3.2自定義槽函數使用條件 4、信號與槽參數傳遞 4.1自定義一個帶參的信號 4.2關聯帶參的信號與槽 4.3發送一個帶…

YOLOv5、YOLOv8改進:S2注意力機制

目錄 1.簡介 2.YOLOv5改進 2.1增加以下S2-MLPv2.yaml文件 2.2common.py配置 2.3yolo.py配置 1.簡介 S2-MLPv2注意力機制 最近&#xff0c;出現了基于 MLP 的視覺主干。與 CNN 和視覺Transformer相比&#xff0c;基于 MLP 的視覺架構具有較少的歸納偏差&#xff0c;在圖像識…

LVS-DR+keepalived實現高可用負載群集

VRRP 通信原理&#xff1a; VRRP就是虛擬路由冗余協議&#xff0c;它的出現就是為了解決靜態路由的單點故障。 VRRP是通過一種競選的一種協議機制&#xff0c;來將路由交給某臺VRRP路由。 VRRP用IP多播的方式&#xff08;多播地址224.0.0.18&#xff09;來實現高可用的通信&…

基于STM32+OneNet設計的物聯網智慧路燈

一、前言 近年來&#xff0c;構筑智慧城市、推動城鎮發展被國家列入重要工作范疇。發布的《超級智慧城市報告》顯示&#xff0c;全球已啟動或在建的智慧城市有1000多個&#xff0c;中國在建500個&#xff0c;遠超排名第二的歐洲&#xff08;90個&#xff09;。從在建智慧城市的…