Trạm gác đối xứng
Xem dạng PDFMột trạm gác lưu một dãy ký hiệu ~s~. Trong quá trình hoạt động, hệ thống có thể thay đổi một ký hiệu ở một vị trí bất kỳ, đồng thời cần kiểm tra nhanh một đoạn ký hiệu có đối xứng hay không.
Một xâu được gọi là đối xứng nếu đọc từ trái sang phải giống đọc từ phải sang trái.
Yêu cầu
Cho xâu ban đầu ~s~ và ~q~ thao tác thuộc một trong hai loại:
1 i c: đổi ký tự tại vị trí ~i~ thành ký tự ~c~.2 l r: kiểm tra xâu con ~s[l..r]~ có đối xứng hay không.
Với mỗi thao tác loại ~2~, in YES nếu đoạn được hỏi là đối xứng, ngược lại in NO.
Dữ liệu
Dữ liệu vào từ chuẩn gồm:
- Dòng đầu tiên chứa hai số nguyên ~n~ và ~q~.
- Dòng thứ hai chứa xâu ~s~ có độ dài ~n~.
- Mỗi dòng trong ~q~ dòng tiếp theo mô tả một thao tác theo một trong hai dạng trên.
Các chỉ số trong xâu được đánh số từ ~1~.
Kết quả
Với mỗi thao tác loại ~2~, ghi ra một dòng là YES hoặc NO.
Ví dụ
Ví dụ 1
Input
7 7
abacaba
2 1 7
2 2 6
1 3 d
2 1 7
2 3 5
1 3 a
2 1 7
Output
YES
YES
NO
NO
YES
Ví dụ 2
Input
5 5
abcde
2 1 5
1 5 a
2 1 5
1 2 d
2 1 5
Output
NO
NO
YES
Giải thích
Ví dụ 1
Ban đầu ~s = \text{abacaba}~ nên cả đoạn ~s[1..7]~ và ~s[2..6]~ đều đối xứng. Sau khi đổi ~s_3~ thành ~\text{d}~, xâu trở thành ~\text{abdcaba}~, nên đoạn ~s[1..7]~ không còn đối xứng.
Sau khi đổi ~s_3~ lại thành ~\text{a}~, xâu trở về ban đầu.
Ví dụ 2
Ban đầu ~\text{abcde}~ không đối xứng. Sau khi đổi ký tự cuối thành ~\text{a}~, xâu ~\text{abcda}~ vẫn không đối xứng. Sau khi đổi ký tự thứ hai thành ~\text{d}~, xâu trở thành ~\text{adcda}~ và đối xứng.
Ràng buộc và chấm điểm
Ràng buộc
- ~1 \le n, q \le 2 \cdot 10^5~.
- ~s~ chỉ gồm chữ cái tiếng Anh thường từ ~\text{a}~ đến ~\text{z}~.
- Trong thao tác
1 i c: ~1 \le i \le n~ và ~c~ là chữ cái tiếng Anh thường. - Trong thao tác
2 l r: ~1 \le l \le r \le n~.
Chấm điểm
- Subtask~1~ ~(25\%)~: ~n, q \le 2000~.
- Subtask~2~ ~(25\%)~: không có thao tác cập nhật.
- Subtask~3~ ~(50\%)~: không có ràng buộc bổ sung.
Bình luận