Chu trình đơn dài nhất

Đề bài

Mô tả

Cho n chuỗi (chain). Chuỗi thứ i gồm ci đỉnh được đánh số từ 1 tới ci và có ci1 cạnh nối hai đỉnh liền kề: cạnh giữa đỉnh j và đỉnh j+1 với mọi 1j<ci.

Ta hợp các chuỗi này lại thành một đồ thị duy nhất theo quy tắc:

  1. Chuỗi đầu tiên được giữ nguyên.
  2. Với mỗi i2: nối đỉnh 1 của chuỗi i với đỉnh ai của chuỗi i1 bằng một cạnh.
  3. Với mỗi i2: nối đỉnh ci (đỉnh cuối) của chuỗi i với đỉnh bi của chuỗi i1 bằng một cạnh.

Hai giá trị a1b1 được cho bằng 1 chỉ để giữ chỉ số nhất quán; chúng không tham gia xây dựng đồ thị.

Hãy tìm độ dài của chu trình đơn dài nhất trong đồ thị thu được. Độ dài của một chu trình được tính bằng số cạnh trên chu trình đó. Chu trình đơn là chu trình mà mỗi đỉnh trên đó được đi qua đúng một lần.

Dữ liệu vào

Dòng đầu chứa một số nguyên t — số bộ dữ liệu.

Với mỗi bộ dữ liệu:

  • Dòng thứ nhất chứa n — số chuỗi.
  • Dòng thứ hai chứa n số nguyên c1,c2,,cn.
  • Dòng thứ ba chứa n số nguyên a1,a2,,an với a1=11aici1 khi i2.
  • Dòng thứ tư chứa n số nguyên b1,b2,,bn với b1=11bici1 khi i2.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra trên một dòng độ dài chu trình đơn dài nhất trong đồ thị tương ứng.

Ràng buộc

  • 1t1000
  • 2n105
  • 2ci109
  • Tổng n qua tất cả bộ dữ liệu không vượt quá 105.

Ví dụ

Input Output Giải thích
3
4
3 4 3 3
-1 1 2 2
-1 2 2 3
2
5 6
-1 5
-1 1
3
3 5 2
-1 1 1
-1 3 5
7
11
8
Bộ 1: chu trình đơn dài nhất có độ dài 7, tận dụng chuỗi 3 và chuỗi 4 (đi vào chuỗi 4 ở đỉnh 1, ra ở đỉnh 3, đóng chu trình qua hai đỉnh nối ở chuỗi 3). Không thể mở rộng thêm sang chuỗi 2 vì sẽ phá tính đơn của chu trình.
Bộ 2: chu trình duy nhất có độ dài 11 — đi hết toàn bộ hai chuỗi.
Bộ 3: đáp án là 8.
1
3
3 3 3
-1 1 1
-1 3 3
8 Chu trình tối ưu đi qua toàn bộ ba chuỗi: dùng cả 3 đỉnh của chuỗi 1, 3 đỉnh của chuỗi 23 đỉnh của chuỗi 3, kết hợp 4 cạnh nối — tổng cộng 8 cạnh.

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 1.26.3 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