USACO 2016 - Tháng 2 - Hạng Bạch Kim

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 USACO 2016Feb Platinum - Load Balancing 100 (p) 1.0s 512M
2 USACO 2016 - Fenced In 100 (p) 4.0s 512M
3 USACO 2016 - Circular Barn 100 (p) 4.0s 512M

1. USACO 2016Feb Platinum - Load Balancing

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bác nông dân John có \(N\) chú bò đang đứng ở các vị trí khác nhau đôi một \((x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\) trên một cánh đồng hai chiều \((1 \leq N \leq 100\ 000\), và \(x_i, y_i\) là các số nguyên dương lẻ có giá trị tối đa \(1\ 000\ 000)\). Bác John muốn chia cánh đồng bằng cách dựng lên một hàng rào bắc-nam dài vô hạn theo đường thẳng \(x=a\) (a là một số nguyên chẵn, để đảm bảo không cắt ngang con bò nào). Ông cũng muốn dựng lên một hàng rào dài vô hạn khác theo hướng đông-tây theo phương trình đường thẳng \(y=b\), với \(b\) là một số nguyên chẵn. Hai hàng rào này giao nhau tại điểm \((a, b)\), và chúng chia cánh đồng thành bốn vùng.

Bác John muốn chọn \(a\)\(b\) sao cho số lượng bò xuất hiện ở bốn vùng sẽ tương đối "cân đối", với không có vùng nào chứa qúa nhiều bò. Gọi \(M\) là số lượng bò tối đa xuất hiện ở 1 trong 4 vùng, bác muốn giá trị \(M\) càng nhỏ càng tốt. Hãy giúp bác ấy tìm ra giá trị nhỏ nhất của \(M\).

Dữ liệu đầu vào

  • Dòng đầu tiên chứa một số nguyên dương \(N\).
  • \(N\) dòng tiếp theo, mối dòng chứa hai số \(x_i, y_i\) biểu diễn địa điểm của từng chú bò.

Định dạng đầu ra

  • In ra giá trị \(M\) nhỏ nhất mà bác John có thể đạt được bằng cách chọn vị trí của hàng rào một cách tối ưu.

Ví dụ

Ví dụ 1

Đầu vào
7
7 3
5 5
7 13
3 1
11 7
5 3
9 1
Đầu ra
2

2. USACO 2016 - Fenced In

Điểm: 100 (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 25\,000\)) 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 25\,000\)) 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, Platinum - Fenced In: https://usaco.org/index.php?page=viewproblem2&cpid=625

Tác giả: Brian Dean.

3. USACO 2016 - Circular Barn

Điểm: 100 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Là một người yêu thích kiến trúc đương đại, Farmer John đã xây một chuồng mới có dạng một đường tròn hoàn hảo. Bên trong, chuồng gồm một vòng tròn có \(n\) phòng, được đánh số theo chiều kim đồng hồ từ \(1 \ldots n\) quanh chu vi chuồng (\(3 \leq n \leq 1\,000\)). Mỗi phòng đều có cửa thông sang hai phòng bên cạnh và một cửa mở ra bên ngoài chuồng.

Farmer John muốn đúng \(r_i\) con bò ở lại trong phòng \(i\) (\(1 \leq r_i \leq 1\,000\,000\)). Để lùa bò vào chuồng một cách trật tự, ông dự định mở khóa \(k\) cửa ngoài (\(1 \leq k \leq 7\)), chỉ cho phép đàn bò đi vào qua các cửa đó. Sau đó, mỗi con bò đi theo chiều kim đồng hồ qua các phòng cho đến khi đến một vị trí thích hợp. Farmer John muốn mở khóa những cửa ngoài sao cho tổng quãng đường đàn bò phải đi sau khi vào chuồng là nhỏ nhất. Ban đầu, đàn bò có thể xếp hàng theo bất kỳ cách nào bên ngoài \(k\) cửa đã mở khóa; việc này không được tính vào tổng quãng đường đang xét. Hãy xác định tổng quãng đường nhỏ nhất mà đàn bò phải đi nếu ông chọn \(k\) cửa tốt nhất để mở khóa.

Dữ liệu vào

Dòng đầu tiên chứa \(n\)\(k\). Mỗi dòng trong \(n\) dòng còn lại lần lượt chứa \(r_1 \ldots r_n\).

Dữ liệu ra

In tổng quãng đường nhỏ nhất mà đàn bò phải đi.

Ví dụ

Ví dụ 1

Input
6 2
2
5
4
2
6
2
Output
14
Giải thích

Farmer John có thể mở khóa cửa 2 và cửa 5. Có 11 con bò đi vào qua cửa 2 và đi tổng quãng đường bằng 8 để đến các phòng 2, 3 và 4. Có 10 con bò đi vào qua cửa 5 và đi tổng quãng đường bằng 6 để đến các phòng 5, 6 và 1.

Nguồn

USACO 2016 February Contest, Platinum - Circular Barn: https://usaco.org/index.php?page=viewproblem2&cpid=626

Tác giả: Brian Dean.