| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | USACO 2025 - Forklift Certified | 100 (p) | 4.0s | 512M |
| 2 | USACO 2025 - Lazy Sort | 100 (p) | 4.0s | 512M |
| 3 | USACO 2025 - Package Pickup | 100 (p) | 4.0s | 512M |
Farmer John đang luyện tập để được cấp chứng chỉ lái xe nâng! Trong quá trình huấn luyện, ông cần dọn \(N\) (\(1\le N\le 10^5\)) thùng hàng, được đánh số thuận tiện từ \(1\) đến \(N\), ra khỏi một nhà kho cũ.
Các thùng hàng có thể được mô hình hóa thành những hình chữ nhật song song với các trục trong mặt phẳng hai chiều, trong đó hướng \(+x\) là hướng đông và hướng \(+y\) là hướng bắc. Thùng \(i\) có góc tây nam tại \((x_{i1},y_{i1})\) và góc đông bắc tại \((x_{i2},y_{i2})\). Mọi tọa độ đều là số nguyên trong đoạn \([1,2N]\), và không có hai góc thuộc hai hình chữ nhật khác nhau có cùng tọa độ \(x\) hoặc cùng tọa độ \(y\). Mọi thùng đều có diện tích khác không và không có hai thùng nào giao nhau.
Farmer John dự định lần lượt đưa từng thùng ra ngoài qua lối vào phía tây nam của nhà kho. Tuy nhiên, do giới hạn vật lý của xe nâng, ông chỉ có thể đưa một thùng ra nếu không có phần nào của bất kỳ thùng nào khác vừa nằm về phía nam vừa nằm về phía tây so với góc đông bắc của thùng đó.
Ví dụ với \(N=4\) được minh họa dưới đây. Để đưa thùng \(4\) ra, vùng tô đậm không được chứa bất kỳ thùng nào khác. Thùng \(2\) và \(3\) cản thùng \(4\), còn thùng \(1\) thì không.
Hãy giúp Farmer John quyết định cách đưa tất cả các thùng ra ngoài! Chương trình của bạn phải hoạt động ở hai chế độ riêng biệt, được xác định bởi cờ nguyên \(M\):
Mỗi dữ liệu vào gồm \(T\) (\(1\le T\le 10\)) bộ dữ liệu độc lập. Đảm bảo tổng tất cả các giá trị \(N\) trong một dữ liệu vào không vượt quá \(5\cdot 10^5\).
Dòng đầu tiên chứa \(T\) và \(M\). (Lưu ý rằng \(M\) giống nhau cho mọi bộ dữ liệu.) Sau đó mỗi bộ dữ liệu có định dạng như sau:
Với mỗi bộ dữ liệu:
Ví dụ 1
2 1
4
1 6 2 8
6 2 7 3
3 1 4 7
5 4 8 5
3
1 5 3 6
4 1 5 2
2 3 6 4
1 3 2 4
2 3 1
Bộ dữ liệu đầu tiên tương ứng với ví dụ \(N=4\) ở trên. Thùng \(1\) không bị vật gì cản, thùng \(3\) bị thùng \(1\) cản, thùng \(2\) bị thùng \(3\) cản, và thùng \(4\) bị các thùng \(2\) và \(3\) cản.
Ví dụ 2
2 2
4
1 6 2 8
6 2 7 3
3 1 4 7
5 4 8 5
3
1 5 3 6
4 1 5 2
2 3 6 4
1011
011
Với bộ dữ liệu đầu tiên, thùng \(2\) bị thùng \(3\) cản, nên Farmer John không thể đưa nó ra trước khi đưa thùng \(3\) ra.
Đề bài: Austin Geng.
USACO 2025 US Open Contest, Platinum — Forklift Certified: https://usaco.org/index.php?page=viewproblem2&cpid=1524
Farmer John có \(N\) con bò (\(2\leq N\leq 5\cdot 10^6\)) và đang cố nhờ vào tính lười biếng của chúng để sắp xếp một mảng số nguyên không âm \(A\) độ dài \(N\). Ông có rất nhiều thùng nặng nên xếp các con bò thành một hàng, con bò \(i+1\) đứng sau con bò \(i\), rồi giao \(a_i\) thùng cho con bò \(i\) (\(0\le a_i\)).
Bò vốn lười biếng nên luôn tìm cách đẩy việc cho người khác. Theo thứ tự từ bò \(1\) đến bò \(N-1\), mỗi con bò nhìn con bò đứng sau mình. Nếu bò \(i\) có nhiều thùng hơn hẳn bò \(i+1\), bò \(i\) cho rằng điều này “không công bằng” và đưa một thùng của mình cho bò \(i+1\). Quá trình này lặp lại cho tới khi mọi con bò đều hài lòng.
Sau đó, Farmer John ghi lại số thùng \(b_i\) mà mỗi bò \(i\) đang giữ và tạo mảng \(B\) từ các giá trị này. Nếu \(B=sorted(A)\) thì Farmer John sẽ vui. Không may, Farmer John đã quên tất cả trừ \(Q\) giá trị (\(2\leq Q\leq\min(N,100)\)) trong \(A\). May mắn thay, trong đó có số thùng ông định giao cho con bò đầu tiên và con bò cuối cùng. Mỗi giá trị FJ nhớ được có dạng \(c_i\;v_i\), biểu thị \(a_{c_i}=v_i\) (\(1\leq c_i\leq N\), \(1\le v_i\leq 10^9\)). Hãy xác định số cách khác nhau để điền các giá trị còn thiếu sao cho ông sẽ vui, lấy modulo \(10^9+7\).
Dòng đầu tiên chứa hai số nguyên cách nhau bởi dấu cách \(N\) và \(Q\), lần lượt là số bò và số giá trị được nhớ.
\(Q\) dòng tiếp theo, mỗi dòng chứa hai số nguyên cách nhau bởi dấu cách \(c_i\;v_i\), biểu thị ban đầu bò \(c_i\) giữ \(v_i\) thùng. Đảm bảo \(c_1=1\), \(c_Q=N\) và \(c_i<c_{i+1}\) (thứ tự các con bò tăng nghiêm ngặt).
In ra số cách khác nhau modulo \(10^9+7\) để gán các giá trị \(a_i\) sao cho Farmer John sẽ vui sau khi các con bò thực hiện phép sắp xếp lười biếng. Đảm bảo có ít nhất một cách gán hợp lệ.
Ví dụ 1
3 2
1 3
3 2
2
Trong ví dụ này, FJ nhớ các giá trị ở hai đầu mảng. Hai mảng hợp lệ giúp FJ vui sau khi phép sắp xếp lười biếng kết thúc là \([3,2,2]\) và \([3,3,2]\).
Ví dụ 2
6 3
1 1
3 3
6 5
89
Đề bài: Suhas Nagar.
USACO 2025 US Open Contest, Platinum — Lazy Sort: https://usaco.org/index.php?page=viewproblem2&cpid=1525
Lưu ý: Giới hạn thời gian của bài này là 4 giây, bằng 2 lần giới hạn mặc định.
Farmer John đã phân bố bò và kiện hàng theo một quy luật kỳ lạ trên trục số bằng quy trình sau:
Sau khi bò và kiện hàng được phân bố, Farmer John muốn biết các con bò mất bao lâu để nhặt các kiện hàng. Mỗi giây, bằng chiếc bộ đàm tiện dụng của mình, Farmer John có thể ra lệnh cho một con bò duy nhất di chuyển một đơn vị sang trái hoặc sang phải so với vị trí hiện tại. Nếu một con bò đi đến vị trí có một kiện hàng, nó có thể nhặt kiện hàng đó. Farmer John muốn biết số giây ít nhất cần thiết để các con bò nhặt hết mọi kiện hàng.
Dòng đầu tiên chứa \(M\), \(N\) và \(P\).
\(N\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(L_i\) và \(R_i\).
\(P\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(A_i\) và \(B_i\).
In ra một số nguyên, biểu thị thời gian nhỏ nhất để các con bò có thể nhặt hết mọi kiện hàng, với điều kiện mỗi giây ông chỉ có thể ra một lệnh sang trái/phải cho một con bò duy nhất.
Ví dụ 1
100 3 7
10 10
20 20
30 30
7 7
11 11
13 13
17 17
24 24
26 26
33 33
22
Trong bộ dữ liệu trên, giả sử bò và kiện hàng được đánh số từ trái sang phải. Farmer John có thể thực hiện quy trình sau để nhặt các kiện hàng trong \(22\) giây:
Ví dụ 2
2 1 1
1 5
2 6
3
Có ba con bò và ba kiện hàng. Farmer John có thể ra một lệnh sang phải cho mỗi con bò.
Đề bài: Suhas Nagar và Benjamin Qi.
USACO 2025 US Open Contest, Platinum — Package Pickup: https://usaco.org/index.php?page=viewproblem2&cpid=1526