trang chủ / đề bài / voi14_lcs2x

Dãy con chung bội hai dài nhất

Đề bài

Mô tả

Dãy C=c1,c2,…,ck được gọi là dãy con của dãy A=a1,a2,…,an nếu C có thể nhận được bằng cách xóa bớt một số phần tử của dãy A và giữ nguyên thứ tự của các phần tử còn lại, nghĩa là tìm được dãy các chỉ số 1≤l1<l2<…<lk≤n sao cho c1=al1,c2=al2,…,ck=alk. Ta gọi độ dài của dãy là số phần tử của dãy.

Cho hai dãy A=a1,a2,…,am và B=b1,b2,…,bn. Dãy C=c1,c2,…,ck được gọi là dãy con chung bội hai của dãy A và B nếu C vừa là dãy con của dãy A, vừa là dãy con của dãy B và thỏa mãn điều kiện 2×ci≤ci+1 (i=1,2,…,k−1).

Yêu cầu: Cho hai dãy A và B. Hãy tìm độ dài dãy con chung bội hai có độ dài lớn nhất của hai dãy A và B.

Dữ liệu vào

Dòng đầu tiên chứa T là số lượng bộ dữ liệu. Tiếp đến là T nhóm dòng, mỗi nhóm cho thông tin về một bộ dữ liệu theo khuôn dạng sau:

  • Dòng đầu chứa 2 số nguyên dương m và n.
  • Dòng thứ hai chứa m số nguyên không âm a1,a2,…,am, mỗi số không vượt quá 109.
  • Dòng thứ ba chứa n số nguyên không âm b1,b2,…,bn, mỗi số không vượt quá 109.

Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra

In ra T dòng, mỗi dòng ghi một số nguyên là độ dài dãy con chung bội hai dài nhất của dãy A và B tương ứng với bộ dữ liệu vào (in 0 nếu hai dãy không có phần tử chung).

Ràng buộc

  • 1≤T≤10.
  • 1≤m,n≤1500.
  • 0≤ai,bj≤109.

Subtasks

  • Subtask 1 (30% số điểm): m,n≤15.
  • Subtask 2 (30% số điểm): m,n≤150.
  • Subtask 3 (40% số điểm): m,n≤1500.

Mỗi subtask gồm nhiều test, mỗi test được chấm điểm riêng.

Ví dụ

Input Output Giải thích
1
5 5
5 1 6 10 20
1 8 6 10 20
3 Dãy 1,10,20 là dãy con của cả hai dãy và 2×1≤10, 2×10≤20.
2
4 5
0 0 3 7
0 3 0 6 7
3 3
4 2 1
1 2 4
3
1
Bộ thứ nhất: 0,0,7 hoặc 0,3,7 (vì 2×0≤0, số 0 có thể lặp lại). Bộ thứ hai: hai dãy có thứ tự ngược nhau nên chỉ chọn được một phần tử.

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