Palindrome với Hash
Xem dưới dạng PDF
Gửi bài giải
Điểm:
20
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
Bình muốn kiểm tra xem xâu con \(S[l \ldots r]\) của xâu \(S\) có phải là xâu đối xứng (palindrome) hay không. Có \(Q\) truy vấn, mỗi truy vấn yêu cầu kiểm tra xâu con \([l, r]\) (đánh số từ 0). Hãy dùng hash xâu (xuôi và ngược) để trả lời nhanh.
Định dạng đầu vào
- Dòng đầu chứa xâu \(S\) (\(1 \le |S| \le 10^5\)).
- Dòng thứ hai chứa số nguyên \(Q\) (\(1 \le Q \le 10^5\)).
- \(Q\) dòng tiếp theo, mỗi dòng chứa hai số \(l, r\) (\(0 \le l \le r < |S|\)).
Định dạng đầu ra
- Với mỗi truy vấn, in ra
YESnếu xâu con là palindrome, ngược lại in raNO.
Ví dụ
Input:
abacaba
4
0 6
0 2
1 3
2 4
Output:
YES
YES
NO
YES
Ràng buộc
- 30% số điểm: \(|S| \le 1000, Q \le 1000\).
- 70% số điểm còn lại: \(|S|, Q \le 10^5\).
Nhận xét