Mister B và trò chơi nhàm chán

Đề bài

Mô tả

Hai người chơi cùng xây dựng một xâu s gồm các chữ cái tiếng Anh thường. Ban đầu, s là tiền tố độ dài a của bảng chữ cái (ví dụ với a=5 thì s= "abcde").

Hai người lần lượt nối thêm chữ cái vào cuối s. Mister B đi trước.

  • Mỗi lượt, Mister B nối đúng b chữ cái tuỳ chọn vào cuối s.
  • Mỗi lượt, đối thủ (máy) nối đúng a chữ cái. Máy xét hậu tố độ dài a hiện tại của s và tạo xâu t độ dài a sao cho: tất cả chữ cái trong t đôi một khác nhau và không xuất hiện trong hậu tố đã xét. Trong các xâu t thoả mãn, máy chọn xâu nhỏ nhất theo thứ tự từ điển. Sau đó máy nối t vào cuối s.

Ví dụ với a=4, nếu hậu tố độ dài 4 là "bfdd" thì máy chọn t= "aceg".

Mister B muốn tìm hiểu: với mọi chiến lược chọn của mình, số lượng chữ cái phân biệt nhỏ nhất có thể xuất hiện trong đoạn s[l..r] (tính cả hai đầu) là bao nhiêu? Các vị trí của s được đánh số bắt đầu từ 1.

Dữ liệu vào

Một dòng chứa bốn số nguyên a, b, l, r.

Dữ liệu ra

In ra một số nguyên — số lượng chữ cái phân biệt nhỏ nhất có thể trong đoạn từ vị trí l đến vị trí r của s.

Ràng buộc

  • 1a,b12
  • 1lr109

Ví dụ

Input Output Giải thích
1 1 1 8 2 Có thể tạo s= "abababab..."; đoạn [1,8] chỉ chứa hai chữ cái phân biệt.
4 2 2 6 3 Có thể tạo s= "abcdbcaefg..."; đoạn [2,6] là "bcdbc" — gồm 3 chữ cái phân biệt.
3 7 4 6 1 Có thể tạo s= "abczzzacad..."; đoạn [4,6] là "zzz" — chỉ chứa 1 chữ cái.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0