trang chủ / đề bài / makedist

Tất Cả Phân Biệt

Đề bài

Mô tả

Cho một mảng số nguyên gồm N phần tử, mỗi phần tử có giá trị trong đoạn [1,N], và một số nguyên K khác 0 (−N≤K≤N).

Bạn có thể thực hiện phép biến đổi: chọn một chỉ số i và gán ai=ai+K.

Tìm số phép biến đổi ít nhất để tất cả các phần tử trong mảng đôi một khác nhau.

Dữ liệu vào

  • Dòng 1: Số nguyên T — số bộ test (1≤T≤10)
  • Với mỗi bộ test:
    • Dòng 1: Hai số nguyên N và K
    • Dòng 2: N số nguyên a1,a2,…,aN

Tổng N trên tất cả các bộ test không vượt quá 106.

Dữ liệu ra

Với mỗi bộ test, in ra một số nguyên — số phép biến đổi ít nhất cần thực hiện.

Ràng buộc

  • 1≤N≤2×105
  • −N≤K≤N, K≠0
  • 1≤ai≤N
  • Kết quả có thể lớn, cần sử dụng kiểu số nguyên 64-bit

Ví dụ

Input Output Giải thích
4
4 1
4 1 4 1
4 -3
4 1 4 1
4 4
4 1 4 1
3 -1
1 1 2
2
4
2
1
Test 1: [4,1,4,1]→[5,1,4,1]→[5,1,4,2] sau 2 phép.

Ghi chú

  • Test 2-4: N≤50
  • Test 5-7: N≤2000
  • Test 8-10: K=1
  • Test 11-13: Không có ràng buộc bổ sung

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