So sánh hai đoạn xâu

Đề bài

Mô tả

Cho xâu S độ dài N chỉ gồm chữ cái Latin thường và Q truy vấn. Mỗi truy vấn gồm bốn số nguyên l1,r1,l2,r2 (1≤l1≤r1≤N, 1≤l2≤r2≤N): hãy cho biết hai xâu con S[l1…r1] và S[l2…r2] có bằng nhau hay không (giống nhau từng kí tự, và do đó có cùng độ dài).

Dữ liệu vào

  • Dòng đầu: hai số nguyên N và Q.
  • Dòng thứ hai: xâu S độ dài N.
  • Q dòng tiếp theo, dòng thứ i gồm bốn số l1,r1,l2,r2 mô tả một truy vấn.

Dữ liệu ra

In Q dòng: với mỗi truy vấn, in YES nếu hai xâu con bằng nhau, ngược lại in NO.

Ràng buộc

  • 1≤N,Q≤2·105
  • S chỉ gồm chữ cái Latin thường (a–z).
  • Các vị trí được đánh chỉ số từ 1.

Ví dụ

Input Output Giải thích
7 4
abacaba
1 3 5 7
1 2 5 6
2 4 6 7
1 1 7 7
YES
YES
NO
YES
Với S= abacaba. Q1: S[1..3]= aba và S[5..7]= aba bằng nhau. Q2: S[1..2]= ab và S[5..6]= ab bằng nhau. Q3: S[2..4]= bac và S[6..7]= ba khác độ dài, không bằng. Q4: hai kí tự a ở đầu và cuối bằng nhau.
5 3
ababa
1 3 3 5
2 4 1 3
1 5 1 5
YES
NO
YES
Với S= ababa. Q1: S[1..3]= aba và S[3..5]= aba bằng nhau (hai đoạn giao tại vị trí 3). Q2: S[2..4]= bab khác S[1..3]= aba. Q3: cả hai chính là S.

Ghi chú

  • Hai xâu con có độ dài khác nhau hiển nhiên không bằng nhau, in NO.
  • Hai khoảng [l1,r1] và [l2,r2] có thể trùng nhau hoặc giao nhau bất kì.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0