trang chủ / đề bài / qt_tst_22_d

Biến đổi dãy số

Đề bài

Mô tả

Dãy số Double là dãy số nguyên có 2k phần tử x1,x2,…,x2k (k nguyên), có k phần tử bên trái và k phần tử bên phải, sao cho có cách ghép k phần tử bên trái với k phần tử bên phải tạo thành k cặp mà mỗi cặp là hai số giống nhau. Ví dụ dãy số 1 2 3 3 1 2 và dãy số 1 1 2 3 2 3 1 1 2 2 là các dãy số Double, nhưng dãy số 1 1 2 2 không phải là dãy số Double.

Vinh có dãy N số nguyên a1,a2,…,aN (1≤ai≤N, N chẵn), có L số đầu tiên ở tập số bên trái và R số tiếp theo ở tập số bên phải (L+R=N). Để biến đổi dãy số trên thành dãy số Double, Vinh có thể thực hiện số lần biến đổi không hạn chế. Mỗi lần biến đổi được thực hiện bằng một trong ba cách sau:

  • Thay đổi giá trị ai thành giá trị bi (1≤bi≤N);
  • Di chuyển một số từ tập số bên trái sang tập số bên phải và giữ nguyên giá trị;
  • Di chuyển một số từ tập số bên phải sang tập số bên trái và giữ nguyên giá trị.

Ví dụ: Vinh có dãy số 1 1 2 2 2 2 với L=2 và R=4 thì số lần biến đổi ít nhất là 3: trong đó số 2 ở tập số bên phải di chuyển về tập số bên trái, thay đổi hai số 1 ở tập số bên trái thành hai số 2 (hoặc thay đổi hai số 2 ở tập số bên phải thành hai số 1).

Yêu cầu: Tính số lần biến đổi ít nhất để dãy số trên thành dãy số Double.

Dữ liệu vào

  • Dòng đầu tiên có một số T là số lượng test (T≤10);
  • Mỗi test có cấu trúc như sau:
    • Dòng đầu ghi ba số nguyên N,L,R trong đó 1≤N≤200000, L+R=N;
    • Dòng tiếp theo ghi N số a1,a2,…,aN (1≤ai≤N).

Các số trên cùng một dòng cách nhau bởi dấu cách.

Dữ liệu ra

Gồm T dòng, mỗi dòng ghi số lần biến đổi tương ứng với mỗi test theo yêu cầu bài toán.

Ràng buộc

  • 1≤T≤10
  • 1≤N≤200000, N chẵn
  • 0≤L,R≤N, L+R=N
  • 1≤ai≤N

Subtasks

  • Subtask 1 (50% số điểm): L=R.
  • Subtask 2 (50% số điểm): N≤200000.

Ví dụ

Input Output Giải thích
3
6 3 3
1 2 3 2 2 2
6 2 4
1 1 2 2 2 2
6 5 1
6 5 4 3 2 1
2
3
5
Test 1: thay đổi hai số 1 và 3 ở tập bên trái thành 2. Test 2: như ví dụ trong đề. Test 3: không có cặp nào sẵn, cần chuyển 2 số sang bên phải và thay đổi giá trị 3 số.
3
4 2 2
1 1 2 2
4 2 2
1 2 2 1
6 3 3
1 1 2 3 3 3
2
0
3
Ví dụ thêm (không có trong đề gốc). Test 1: dãy 1 1 2 2 cần thay đổi hai số. Test 2: đã là dãy Double. Test 3: không có số nào ghép được sẵn và L=R nên không có lợi khi di chuyển, phải thay đổi 3 số.

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