Đăng ký kênh truyền hình

Đề bài

Mô tả

Đài truyền hình BerTV mỗi ngày phát đúng một tập của một trong k chương trình. Bạn biết trước lịch phát sóng của n ngày sắp tới: dãy số nguyên a1,a2,…,an, trong đó ai là chương trình được phát vào ngày thứ i.

Gói đăng ký được bán theo từng chương trình: mua một chương trình nghĩa là xem được mọi tập của chương trình đó, và mỗi chương trình phải mua riêng.

Bạn muốn xem truyền hình liên tục d ngày. Hãy tìm số chương trình ít nhất cần đăng ký sao cho tồn tại một đoạn d ngày liên tiếp mà mọi tập phát trong đoạn đó đều thuộc các chương trình đã mua. Được phép xem nhiều hơn d ngày liên tiếp, miễn là có ít nhất một đoạn d ngày thoả mãn.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số bộ dữ liệu.
  • Mỗi bộ dữ liệu gồm hai dòng:
    • Dòng thứ nhất chứa ba số nguyên n, k, d.
    • Dòng thứ hai chứa n số nguyên a1,a2,…,an.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra trên một dòng số chương trình ít nhất cần đăng ký.

Ràng buộc

  • 1≤t≤104
  • 1≤n≤2·105
  • 1≤k≤106
  • 1≤d≤n
  • 1≤ai≤k
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 2·105.

Ví dụ

Input Output Giải thích
4
5 2 2
1 2 1 2 1
9 3 3
3 3 3 2 2 2 1 1 1
4 10 4
10 8 6 4
16 9 8
3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3
2
1
4
5
Bộ 1: mọi đoạn 2 ngày đều gồm một tập của chương trình 1 và một tập của chương trình 2, nên phải mua cả hai. Bộ 2: đoạn 3 ngày đầu chỉ phát chương trình 3, mua một chương trình là đủ. Bộ 3: đoạn 4 ngày duy nhất có 4 chương trình khác nhau. Bộ 4: mua các chương trình 3,5,7,8,9 thì xem được 8 ngày cuối.
3
6 3 3
1 1 2 3 3 3
4 4 1
4 3 2 1
5 2 5
1 2 1 2 1
1
1
2
Bộ 1: ba ngày cuối đều phát chương trình 3. Bộ 2: d=1 nên chỉ cần mua chương trình phát trong đúng một ngày nào đó. Bộ 3: d=n nên buộc phải phủ toàn bộ lịch, gồm hai chương trình khác nhau.

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