USACO 2016 - Fenced In

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Farmer John nhận ra rằng nhiều con bò của ông mắc chứng sợ không gian rộng một cách kỳ lạ. Để giúp chúng bớt sợ việc gặm cỏ, ông chia cánh đồng lớn thành nhiều vùng nhỏ hơn bằng cách dựng các hàng rào dọc (theo hướng bắc–nam) và ngang (theo hướng đông–tây).

Cánh đồng lớn là một hình chữ nhật có hai đỉnh đối diện tại \((0,0)\)\((A,B)\). FJ dựng \(n\) hàng rào dọc (\(0 \leq n \leq 2000\)) tại các vị trí phân biệt \(a_1 \ldots a_n\) (\(0<a_i<A\)); mỗi hàng rào chạy từ \((a_i,0)\) đến \((a_i,B)\). Ông cũng dựng \(m\) hàng rào ngang (\(0 \leq m \leq 2000\)) tại các vị trí \(b_1 \ldots b_m\) (\(0<b_i<B\)); mỗi hàng rào như vậy chạy từ \((0,b_i)\) đến \((A,b_i)\). Mỗi hàng rào dọc cắt mọi hàng rào ngang, chia cánh đồng lớn thành tổng cộng \((n+1)(m+1)\) vùng.

Không may, FJ hoàn toàn quên làm cổng trên các hàng rào, khiến đàn bò không thể rời khỏi vùng đang bao quanh chúng để đi khắp cánh đồng! Ông muốn khắc phục bằng cách dỡ bỏ một số đoạn hàng rào để bò có thể đi giữa các vùng kề nhau. Ông muốn chọn một số cặp vùng kề nhau và dỡ bỏ toàn bộ đoạn hàng rào ngăn cách mỗi cặp; sau đó, ông muốn đàn bò có thể đi qua những chỗ mở này để đến bất kỳ nơi nào trong cánh đồng lớn.

Ví dụ, FJ có thể bắt đầu với một cấu trúc hàng rào như sau:

+---+--+
|   |  |
+---+--+
|   |  |
|   |  |
+---+--+

và mở nó ra như sau:

+---+--+
|      |
+---+  +
|      |
|      |
+---+--+

Hãy giúp FJ xác định tổng chiều dài hàng rào nhỏ nhất phải dỡ bỏ để đạt được mục tiêu.

Dữ liệu vào

Dòng đầu tiên chứa \(A\), \(B\), \(n\)\(m\) (\(1 \leq A,B \leq 1\,000\,000\,000\)). \(n\) dòng tiếp theo lần lượt chứa \(a_1 \ldots a_n\), và \(m\) dòng sau đó lần lượt chứa \(b_1 \ldots b_m\).

Dữ liệu ra

In chiều dài hàng rào nhỏ nhất mà FJ phải dỡ bỏ. Lưu ý rằng kết quả có thể quá lớn để chứa trong một số nguyên 32 bit tiêu chuẩn, vì vậy bạn có thể cần sử dụng kiểu số nguyên 64 bit (ví dụ, long long trong C/C++).

Ví dụ

Ví dụ 1

Input
15 15 5 2
2
5
10
6
4
11
3
Output
44

Nguồn

USACO 2016 February Contest, Gold - Fenced In: https://usaco.org/index.php?page=viewproblem2&cpid=623

Tác giả: Brian Dean.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: