| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | USACO 2012 - Cow Photography | 100 (p) | 4.0s | 512M |
| 2 | USACO 2014 - Roadblock | 100 (p) | 4.0s | 512M |
| 3 | USACO 2012 - Umbrellas for Cows | 100 (p) | 4.0s | 512M |
Hôm nay những chú bò đặc biệt tinh nghịch! Nông dân John chỉ muốn chụp một bức ảnh những chú bò đang đứng thành hàng, nhưng chúng cứ di chuyển ngay trước khi ông kịp bấm máy.
Cụ thể, mỗi chú trong số \(N\) (\(1 \le N \le 20\,000\)) chú bò của FJ có một số hiệu nguyên duy nhất. FJ muốn chụp những chú bò đứng thành hàng theo một thứ tự rất cụ thể, được biểu diễn bởi nội dung của mảng \(A[1..N]\), trong đó \(A[j]\) là số hiệu của chú bò thứ \(j\) trong thứ tự này. Ông xếp những chú bò theo đúng thứ tự đó, nhưng ngay trước khi ông kịp nhấn nút chụp ảnh, một nhóm gồm không hoặc nhiều chú bò (không nhất thiết liên tiếp) chuyển đến một tập hợp vị trí mới trong hàng. Chính xác hơn, một nhóm gồm không hoặc nhiều chú bò bước ra khỏi hàng, còn những chú bò ở lại dịch chuyển để lấp các khoảng trống vừa tạo ra. Sau đó, những chú bò đã bước ra chen trở lại vào các vị trí khác trong hàng (không nhất thiết là vị trí ban đầu của chúng). Dù bực mình nhưng không nản chí, FJ lại xếp đàn bò theo thứ tự trong \(A\); tuy nhiên, ngay trước lúc ông kịp chụp, một nhóm khác gồm không hoặc nhiều chú bò lại chuyển đến một tập hợp vị trí mới trong hàng.
Quá trình trên lặp lại cho đến khi FJ chụp tổng cộng năm bức ảnh rồi bỏ cuộc. Cho biết nội dung của từng bức ảnh, hãy khôi phục thứ tự dự định ban đầu \(A\). Mỗi bức ảnh cho thấy một thứ tự của đàn bò khác với \(A\) ở chỗ một nhóm gồm không hoặc nhiều chú bò đã di chuyển. Tuy nhiên, mỗi chú bò chỉ di chuyển trong nhiều nhất một bức ảnh: nếu một chú bò thuộc nhóm di chuyển trong một bức ảnh thì nó sẽ không chủ động di chuyển trong bất kỳ bức ảnh nào trong bốn bức còn lại (tất nhiên, chỉ số vị trí của nó vẫn có thể thay đổi do những chú bò xung quanh di chuyển).
Ví dụ 1
5
10
20
30
40
50
20
10
30
40
50
30
10
20
40
50
40
10
20
30
50
50
10
20
30
40
10
20
30
40
50
Có \(5\) chú bò mang số hiệu \(10\), \(20\), \(30\), \(40\) và \(50\). Trong mỗi bức ảnh trong số \(5\) bức ảnh, một chú bò khác nhau chuyển lên đầu hàng (ở đây, nhiều nhất một chú bò di chuyển trong mỗi bức ảnh, nhưng trong các bộ dữ liệu khác, nhiều chú bò có thể cùng di chuyển trong một bức ảnh cụ thể).
Thứ tự ban đầu chính xác \(A[1..5]\) là \(10,20,30,40,50\).
USACO 2011 December Contest, Silver Division — Cow Photography
Tác giả đề: Brian Dean, 2011.
Mỗi buổi sáng, FJ thức dậy và đi qua trang trại từ nhà đến chuồng. Trang trại gồm \(N\) cánh đồng (\(1 \le N \le 250\)) được nối với nhau bởi \(M\) con đường hai chiều (\(1 \le M \le 25\,000\)), mỗi con đường có một độ dài tương ứng. Nhà của FJ nằm ở cánh đồng \(1\), còn chuồng nằm ở cánh đồng \(N\). Không có cặp cánh đồng nào được nối bởi nhiều con đường trùng lặp, và có thể di chuyển giữa hai cánh đồng bất kỳ trong trang trại bằng cách đi theo một dãy đường thích hợp. Khi đi từ cánh đồng này đến cánh đồng khác, FJ luôn chọn một lộ trình gồm một dãy đường có tổng độ dài nhỏ nhất.
Những cô bò của Farmer John, vẫn luôn thích gây rắc rối, quyết định cản trở thói quen buổi sáng của ông. Chúng dự định chất một đống kiện cỏ khô trên đúng một trong \(M\) con đường của trang trại, khiến độ dài của con đường đó tăng gấp đôi. Những cô bò muốn chọn con đường để chặn sao cho mức tăng quãng đường từ nhà đến chuồng của FJ là lớn nhất. Hãy giúp chúng xác định có thể làm lộ trình của FJ dài thêm nhiều nhất bao nhiêu.
In ra mức tăng lớn nhất có thể của tổng độ dài lộ trình ngắn nhất của FJ khi tăng gấp đôi độ dài của một con đường duy nhất.
Ví dụ 1
5 7
2 1 5
1 3 1
3 2 8
3 5 7
3 4 3
2 4 7
4 5 2
2
Có \(5\) cánh đồng và \(7\) con đường. Ban đầu, đường đi ngắn nhất từ nhà (cánh đồng \(1\)) đến chuồng (cánh đồng \(5\)) là \(1-3-4-5\), có tổng độ dài \(1+3+2=6\).
Nếu những cô bò tăng gấp đôi độ dài con đường từ cánh đồng \(3\) đến cánh đồng \(4\) (tăng từ \(3\) lên \(6\)), lộ trình ngắn nhất của FJ lúc này là \(1-3-5\), có tổng độ dài \(1+7=8\), dài hơn lộ trình ngắn nhất ban đầu \(2\) đơn vị.
USACO 2014 February Contest, Gold — Roadblock
Tác giả: Brian Dean.
Hôm nay trời mưa! \(N\) (\(1 \le N \le 5\,000\)) chú bò của Nông dân John, được đánh số từ \(1\) đến \(N\), đặc biệt không thích bị ướt. Những chú bò đang đứng trong các ô chuồng không có mái che, được sắp xếp trên một trục số. Các ô chuồng có tọa độ \(X\) từ \(1\) đến \(M\) (\(1 \le M \le 100\,000\)). Chú bò \(i\) đứng trong ô chuồng tại tọa độ \(X_i\) (\(1 \le X_i \le M\)). Không có hai chú bò nào đứng chung một ô chuồng.
Để bảo vệ đàn bò khỏi mưa, Nông dân John muốn mua ô cho chúng. Một chiếc ô phủ từ tọa độ \(X_i\) đến \(X_j\) (\(X_i \le X_j\)) có chiều rộng \(X_j-X_i+1\). Chi phí để mua một chiếc ô có chiều rộng \(W\) là \(C_W\) (\(1 \le C_W \le 1\,000\,000\)). Ô lớn hơn không nhất thiết đắt hơn ô nhỏ hơn.
Hãy giúp Nông dân John tìm chi phí nhỏ nhất để mua một tập hợp ô che mưa cho mọi chú bò. Lưu ý rằng các chiếc ô trong một phương án tối ưu có thể chồng lấn lên nhau một phần.
Ví dụ 1
6 12
1
2
11
8
4
12
2
3
4
4
8
9
15
16
17
18
19
19
9
Có \(12\) ô chuồng, và các ô chuồng \(1\), \(2\), \(4\), \(8\), \(11\) và \(12\) có bò. Một chiếc ô che một ô chuồng có giá \(2\), một chiếc ô che hai ô chuồng có giá \(3\), và cứ tiếp tục như vậy.
Bằng cách mua một chiếc ô kích thước \(4\), một chiếc ô kích thước \(1\) và một chiếc ô kích thước \(2\), có thể che mưa cho tất cả những chú bò với chi phí \(4+2+3=9\):
UUUUUUUUUU U UUUU
C C C C C C
|--|--|--|--|--|--|--|--|--|--|--|
1 2 3 4 5 6 7 8 9 10 11 12
C biểu diễn một chú bò và U biểu diễn một phần của chiếc ô.
USACO 2011 December Contest, Silver Division — Umbrellas for Cows
Tác giả đề: Alex Chen, 2011.