trang chủ / đề bài / watchmet

Dãy Con Tốt Nhất

Đề bài

Mô tả

Farmer John có một xâu nhị phân độ dài N, ban đầu toàn số 0. Anh thực hiện M thao tác lật (flip), mỗi thao tác đảo tất cả ký tự từ vị trí l đến r (0→1, 1→0).

Sau đó trả lời Q truy vấn. Mỗi truy vấn cho ba số l,r,k: tìm dãy con (subsequence) có thứ tự từ điển lớn nhất độ dài k từ đoạn [l,r] của xâu. Kết quả được biểu diễn dưới dạng giá trị nhị phân modulo 109+7.

Cụ thể, nếu dãy con tìm được là s1s2…sk, in ra ∑i=0k−12i·sk−i(mod109+7).

Dữ liệu vào

  • Dòng 1: Ba số nguyên N,M,Q (1≤N≤109, 1≤M≤2×105, 1≤Q≤2×105)
  • M dòng tiếp theo: Hai số l,r là đoạn cần lật (1≤l≤r≤N)
  • Q dòng tiếp theo: Ba số l,r,k (1≤l≤r≤N, 1≤k≤r−l+1)

Dữ liệu ra

  • Q dòng, mỗi dòng là kết quả của truy vấn tương ứng modulo 109+7.

Ràng buộc

  • 1≤N≤109
  • 1≤M,Q≤2×105

Ví dụ

Input Output Giải thích
5 3 9
1 5
2 4
3 3
1 5 5
1 5 4
1 5 3
1 5 2
1 5 1
2 5 4
2 5 3
2 5 2
2 5 1
21
13
7
3
1
5
5
3
1
Sau 3 thao tác lật, xâu trở thành "10101". Truy vấn (1,5,5): dãy con duy nhất là "10101" = 21. Truy vấn (1,5,4): dãy con lớn nhất là "1101" = 13.

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