Đường đi tam giác

Đề bài

Mô tả

Xét một tam giác vô hạn gồm các tầng. Đánh số các tầng từ 1 bắt đầu từ đỉnh tam giác (từ trên xuống dưới). Tầng thứ k chứa k điểm, đánh số từ trái sang phải. Mỗi điểm được mô tả bởi cặp số (r,c) với 1cr, trong đó r là số tầng và c là số thứ tự điểm trong tầng đó.

Từ mỗi điểm (r,c) có hai cạnh có hướng đi xuống (r+1,c)(r+1,c+1), nhưng tại mỗi điểm chỉ có đúng một cạnh được kích hoạt:

  • Nếu r+c chẵn, cạnh đi tới (r+1,c) được kích hoạt.
  • Nếu r+c lẻ, cạnh đi tới (r+1,c+1) được kích hoạt.

Ban đầu bạn ở điểm (1,1). Tại mỗi lượt bạn có thể thực hiện một trong hai thao tác:

  • Đảo cạnh tại điểm (r,c) hiện tại: thay cạnh kích hoạt hiện tại bằng cạnh còn lại. Thao tác này làm chi phí đường đi tăng thêm 1.
  • Di chuyển từ điểm hiện tại theo cạnh đang được kích hoạt sang điểm kế tiếp. Thao tác này không tốn chi phí.

Cho dãy n điểm (r1,c1),(r2,c2),,(rn,cn) phân biệt. Hãy tìm chi phí nhỏ nhất của đường đi xuất phát từ (1,1) và đi qua tất cả n điểm theo thứ tự bất kỳ.

Dữ liệu đảm bảo luôn tồn tại ít nhất một cách đi qua đủ n điểm.

Dữ liệu vào

Dòng đầu chứa số nguyên t (1t104) — số bộ test.

Với mỗi bộ test:

  • Dòng đầu chứa số nguyên n (1n2·105) — số điểm cần đi qua.
  • Dòng thứ hai chứa n số nguyên r1,r2,,rn (1ri109).
  • Dòng thứ ba chứa n số nguyên c1,c2,,cn (1ciri).

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

Dữ liệu ra

Với mỗi bộ test, in ra một dòng chứa chi phí nhỏ nhất của đường đi.

Ví dụ

Input Output Giải thích
4
3
1 4 2
1 3 1
2
2 4
2 3
2
1 1000000000
1 1000000000
4
3 10 5 8
2 5 2 4
0
1
999999999
2
Test 1: từ (1,1) có thể tới (2,1) rồi (4,3) mà không cần đảo cạnh nào. Test 2: cần đúng một lần đảo. Test 3: cần đảo cạnh ở mỗi tầng để di chuyển từ (1,1) tới (109,109), tổng cộng 1091 lần.

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