Tách trộn (Unmerge)

Đề bài

Mô tả

Cho hai mảng ab có độ dài lần lượt là nm, không có phần tử chung. Ta định nghĩa mảng merge(a,b) độ dài n+m một cách đệ quy như sau:

  • Nếu một trong hai mảng rỗng, kết quả là mảng còn lại.
  • Nếu cả hai mảng khác rỗng và a1<b1, thì merge(a,b)=[a1]+merge([a2,,an],b) — tức là lấy phần tử đầu a1 ra, trộn phần còn lại, rồi đặt a1 lên đầu kết quả.
  • Nếu cả hai mảng khác rỗng và a1>b1, thì merge(a,b)=[b1]+merge(a,[b2,,bm]).

Đây chính là bước trộn trong thuật toán sắp xếp trộn (merge sort), nhưng ở đây ta áp dụng nó cho cả những mảng không được sắp xếp. Ví dụ, nếu a=[3,1]b=[2,4] thì merge(a,b)=[2,3,1,4].

Một hoán vị là một mảng gồm các số nguyên phân biệt từ 1 đến độ dài của mảng.

Cho một hoán vị p độ dài 2n. Hãy xác định xem có tồn tại hai mảng ab, mỗi mảng độ dài n và không có phần tử chung, sao cho p=merge(a,b) hay không.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t — số lượng bộ dữ liệu. Tiếp theo là 2t dòng mô tả các bộ.
  • Dòng đầu của mỗi bộ chứa số nguyên n.
  • Dòng thứ hai của mỗi bộ chứa 2n số nguyên p1,,p2n — một hoán vị của 12n.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra "YES" nếu tồn tại hai mảng a,b thỏa mãn, ngược lại in ra "NO".

Ràng buộc

  • 1t1000
  • 1n2000
  • 1pi2n, p là một hoán vị của 12n.
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 2000.

Ví dụ

Input Output Giải thích
6
2
2 3 1 4
2
3 1 2 4
4
3 2 6 1 5 7 8 4
3
1 2 3 4 5 6
4
6 1 3 7 4 5 8 2
6
4 3 2 5 1 11 9 12 8 6 10 7
YES
NO
YES
YES
NO
NO
Bộ 1: [2,3,1,4]=merge([3,1],[2,4]). Bộ 3: [3,2,6,1,5,7,8,4]=merge([3,2,8,4],[6,1,5,7]). Bộ 4: [1,2,3,4,5,6]=merge([1,3,6],[2,4,5]).
1
9
2 1 4 3 7 6 5 10 9 8 13 12 11 18 17 16 15 14
YES Có thể tách được thành hai mảng độ dài 9.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0