| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | USACO 2014 - Empty Stalls | 100 (p) | 4.0s | 512M |
| 2 | USACO 2014 - Line of Sight | 100 (p) | 4.0s | 512M |
| 3 | USACO 2014 - No Change | 100 (p) | 4.0s | 512M |
Chuồng mới của Farmer John gồm một vòng tròn khổng lồ có \(N\) ô chuồng (\(2 \le N \le 3\,000\,000\)), được đánh số từ \(0..N-1\), trong đó ô \(N-1\) nằm kề ô \(0\).
Cuối mỗi ngày, những con bò của FJ lần lượt trở về chuồng, mỗi con có một ô chuồng ưa thích mà nó muốn chiếm. Tuy nhiên, nếu ô chuồng ưa thích của một con bò đã bị con khác chiếm, nó sẽ lần lượt dò về phía trước từ ô này cho đến khi tìm thấy ô trống đầu tiên rồi chiếm ô đó. Nếu dò qua ô \(N-1\), nó tiếp tục dò từ ô \(0\).
Cho ô chuồng ưa thích của mỗi con bò, hãy xác định chỉ số nhỏ nhất của một ô chuồng vẫn còn trống sau khi tất cả bò đã trở về. Lưu ý rằng đáp án không phụ thuộc vào thứ tự những con bò trở về chuồng.
Để tránh phải đọc một lượng dữ liệu vào khổng lồ, dữ liệu vào của bài toán được mô tả dưới dạng rút gọn bằng \(K\) dòng (\(1 \le K \le 10\,000\)), mỗi dòng có dạng:
X Y A B
Một dòng như vậy mô tả ô chuồng ưa thích của tổng cộng \(XY\) con bò: có \(X\) con bò thích mỗi ô trong các ô \(f(1)..f(Y)\), với \(f(i) = (Ai + B) \bmod N\). Các giá trị \(A\) và \(B\) nằm trong khoảng \(0..1\,000\,000\,000\).
Đừng quên giới hạn bộ nhớ tiêu chuẩn 64 MB áp dụng cho tất cả các bài toán.
Ví dụ 1
10 3
3 2 2 4
2 1 0 1
1 1 1 7
5
Có 10 ô chuồng, được đánh số từ \(0..9\). Dòng thứ hai của dữ liệu vào cho biết có 3 con bò thích ô \((2 \times 1+4) \bmod 10 = 6\) và 3 con bò thích ô \((2 \times 2+4) \bmod 10 = 8\). Dòng thứ ba cho biết có 2 con bò thích ô \((0 \times 1+1) \bmod 10 = 1\). Dòng thứ tư cho biết có 1 con bò thích ô \((1 \times 1+7) \bmod 10 = 8\) (vì vậy tổng cộng có 4 con bò thích ô này).
Cuối cùng, tất cả các ô chuồng đều bị chiếm ngoại trừ ô 5.
USACO 2013 November Contest, Gold — Problem 1: Empty Stalls
Tác giả đề: Brian Dean, 2013.
\(N\) con bò của Farmer John (\(1 \le N \le 50\,000\)) đứng tại các điểm đôi một khác nhau trên đồng cỏ hai chiều của ông. Ở giữa đồng cỏ có một silo ngũ cốc lớn hình tròn. Những con bò ở hai phía đối diện của silo không thể nhìn thấy nhau vì silo chắn tầm nhìn. Hãy xác định số cặp bò có thể nhìn thấy nhau theo một đường ngắm thẳng.
Silo ngũ cốc có tâm tại gốc tọa độ \((0,0)\) và bán kính \(R\). Không có con bò nào nằm trên hoặc bên trong đường tròn tương ứng với silo, và không có hai con bò nào cùng nằm trên một đường thẳng tiếp xúc với silo. Giá trị \(R\) nằm trong khoảng \(1..1\,000\,000\), và mỗi con bò đứng tại một điểm có tọa độ nguyên trong khoảng \(-1\,000\,000..+1\,000\,000\).
Ví dụ 1
4 5
0 10
0 -10
10 0
-10 0
4
Có 4 con bò tại các vị trí \((0,10)\), \((0,-10)\), \((10,0)\) và \((-10,0)\). Silo có tâm tại \((0,0)\) và bán kính 5.
Trong cả 6 cặp bò, mọi cặp đều có thể nhìn thấy nhau ngoại trừ hai cặp nằm ở hai phía đối diện của silo: hai con bò tại \((-10,0)\) và \((10,0)\) không thể nhìn thấy nhau, và hai con bò tại \((0,-10)\) và \((0,10)\) cũng không thể nhìn thấy nhau.
USACO 2013 November Contest, Gold — Problem 2: Line of Sight
Tác giả đề: Brian Dean và Chad Waters, 2013.
Farmer John đang ở chợ để mua vật tư cho trang trại. Trong túi ông có \(K\) đồng xu (\(1 \le K \le 16\)), mỗi đồng có giá trị trong khoảng \(1..100\,000\,000\). FJ muốn thực hiện một dãy gồm \(N\) giao dịch mua hàng (\(1 \le N \le 100\,000\)), trong đó giao dịch thứ \(i\) có giá \(c(i)\) đơn vị tiền (\(1 \le c(i) \le 10\,000\)). Trong quá trình thực hiện lần lượt các giao dịch này, thỉnh thoảng ông có thể dừng lại và dùng một đồng xu duy nhất để thanh toán cho tất cả các món hàng đã mua kể từ lần thanh toán trước đó (dĩ nhiên, đồng xu được dùng phải có giá trị đủ lớn để thanh toán toàn bộ số tiền này). Thật không may, những người bán hàng ở chợ hoàn toàn không có tiền thối, vì vậy mỗi khi FJ dùng một đồng xu có giá trị lớn hơn số tiền phải trả, ông đáng tiếc không nhận lại được tiền thừa!
Hãy tính số tiền lớn nhất FJ có thể còn lại sau khi thực hiện lần lượt cả \(N\) giao dịch mua hàng. In ra \(-1\) nếu FJ không thể thực hiện tất cả các giao dịch.
Ví dụ 1
3 6
12
15
10
6
3
3
2
3
7
12
FJ có 3 đồng xu với các giá trị 12, 15 và 10. Ông phải lần lượt thực hiện các giao dịch có giá trị 6, 3, 3, 2, 3 và 7.
FJ dùng đồng xu 10 đơn vị để thanh toán hai giao dịch đầu tiên, sau đó dùng đồng xu 15 đơn vị để thanh toán các giao dịch còn lại. Như vậy ông còn lại đồng xu 12 đơn vị.
USACO 2013 November Contest, Gold — Problem 3: No Change
Tác giả đề: Brian Dean, 2013.