trang chủ / đề bài / dhbb25_dx41_10_sacso

Sặc sỡ

Đề bài

Mô tả

Cho một xâu ký tự S có độ dài N chỉ gồm 4 màu sắc tương ứng với các kí tự G, R, B, Y. Ta định nghĩa "độ sặc sỡ" của một xâu là số lần đổi màu các kí tự trên xâu đó khi xét từ trái qua phải, trong đó màu của kí tự đầu tiên cũng được đếm là một lần. Nói cách khác, độ sặc sỡ là số đoạn liên tiếp lớn nhất gồm các kí tự cùng màu. Ví dụ:

S=GGBBBGGYRRR gồm 5 đoạn cùng màu GG, BBB, GG, Y, RRR, nên độ sặc sỡ của xâu trên là 5.

Cho Q truy vấn có dạng:

  1. change L R x: thay đổi xâu con của S từ vị trí L đến R thành xâu con gồm có 1 kí tự duy nhất là x (1≤L≤R≤N), tức là gán SL=SL+1=…=SR=x.
  2. get L R: tính độ sặc sỡ của xâu con từ vị trí L đến R (1≤L≤R≤N).

Yêu cầu: Thực hiện các truy vấn trên.

Dữ liệu vào

  • Dòng đầu tiên gồm 2 số nguyên dương N và Q (N,Q≤105).
  • Dòng thứ hai là một xâu kí tự có độ dài N, chỉ gồm các kí tự G, R, B, Y.
  • Q dòng tiếp theo, dòng thứ i trong Q dòng mô tả 1 trong 2 loại truy vấn trên. Kí tự x thuộc G, R, B, Y. Các vị trí được đánh số từ 1.

Dữ liệu ra

Với mỗi truy vấn loại 2, in ra kết quả trên một dòng.

Ràng buộc

  • 1≤N,Q≤105.
  • 1≤L≤R≤N trong mọi truy vấn.
  • Có 25% số điểm của bài tương ứng với N,Q≤1000.
  • Có 25% số điểm của bài tương ứng với không có truy vấn loại 1.
  • Có 25% số điểm của bài tương ứng với truy vấn 1 có L=R và truy vấn 2 có L=1 và R=N.
  • Có 25% số điểm của bài tương ứng ràng buộc đề bài.

Ví dụ

Input Output Giải thích
11 5
GGBBBGGYRRR
get 1 11
get 3 9
get 4 7
change 4 8 B
get 1 11
5
4
2
3
GGBBBGGYRRR có 5 đoạn. Đoạn [3,9] là BBBGGYR có 4 đoạn. Đoạn [4,7] là BBGG có 2 đoạn. Sau khi gán S4..S8=B, xâu thành GGBBBBBBRRR có 3 đoạn.
8 6
GRRGBBYG
get 2 7
change 1 8 G
get 3 6
change 3 4 G
change 4 6 Y
get 2 8
4
1
3
Ví dụ bổ sung. Đoạn [2,7] là RRGBBY có 4 đoạn. Sau khi gán cả xâu thành G, đoạn [3,6] có 1 đoạn. Sau hai lần gán tiếp theo, xâu là GGGYYYGG, đoạn [2,8] là GGYYYGG có 3 đoạn.

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