USACO 2016 - Contaminated Milk
Xem PDFFarmer John, vốn nổi tiếng gần xa vì chất lượng sữa được sản xuất tại trang trại của mình, đang tổ chức một buổi thử sữa cho \(N\) người bạn thân nhất (\(1\le N\le50\)). Đáng tiếc là trong số \(M\) loại sữa có tại buổi tiệc (\(1\le M\le50\)), đúng một loại đã bị hỏng, nhưng Farmer John không biết đó là loại nào! Bất kỳ ai uống phải sữa hỏng sau đó sẽ bị ốm, có thể trong thời gian còn lại của buổi tiệc hoặc sau khi buổi tiệc kết thúc.
Bạn được cung cấp bản ghi của buổi tiệc — ai uống gì vào lúc nào, cũng như ai bị ốm vào lúc nào. Dựa vào thông tin này, bạn có thể suy ra những loại sữa nào có khả năng là loại bị hỏng. Dùng kết quả đó, hãy giúp Farmer John xác định số liều thuốc tối thiểu ông cần chuẩn bị để đảm bảo có thể chữa cho tất cả những người bị ốm, dù họ bị ốm trong hay sau buổi tiệc.
Dữ liệu vào
Dòng đầu tiên chứa các số nguyên \(N\), \(M\), \(D\) và \(S\).
\(D\) dòng tiếp theo (\(1\le D\le1000\)), mỗi dòng chứa ba số nguyên \(p,m,t\), cho biết người \(p\) đã uống loại sữa \(m\) tại thời điểm \(t\). Giá trị \(p\) nằm trong đoạn \(1\ldots N\), \(m\) nằm trong đoạn \(1\ldots M\) và \(t\) nằm trong đoạn \(1\ldots100\). Một người có thể uống cùng một loại sữa nhiều lần và cũng có thể uống nhiều loại sữa tại cùng một thời điểm.
\(S\) dòng tiếp theo (\(1\le S\le N\)), mỗi dòng chứa hai số nguyên \(p,t\), cho biết người \(p\) bị ốm tại thời điểm \(t\). Giá trị \(p\) nằm trong đoạn \(1\ldots N\) và \(t\) nằm trong đoạn \(1\ldots100\). Mỗi người bị ốm nhiều nhất một lần, và họ chỉ bị ốm vì đã uống sữa hỏng tại một thời điểm sớm hơn một cách nghiêm ngặt.
Dữ liệu ra
In một số nguyên duy nhất là số liều thuốc tối thiểu Farmer John cần chuẩn bị để đảm bảo có đủ liều chữa cho tất cả những người bị ốm, cả trong và sau buổi tiệc.
Ví dụ
Ví dụ 1
Input
3 4 7 2
1 1 1
1 4 1
1 3 4
1 2 2
3 1 3
2 1 5
2 2 7
1 3
2 8
Output
3
Giải thích
Có 3 người và 4 loại sữa. Người 1 bị ốm tại thời điểm 3 và người 2 bị ốm tại thời điểm 8. Người 3 không bị ốm tại buổi tiệc, mặc dù ta vẫn cần xét khả năng người này có thể bị ốm sau đó, khi buổi tiệc đã kết thúc. Hãy lần lượt xét từng loại sữa để xem loại nào có thể bị nhiễm bẩn; ta biết một loại sữa có khả năng bị hỏng nếu tất cả những người đã bị ốm đều uống loại sữa đó trước khi bị ốm.
Sữa 1: Cả hai người bị ốm (1 và 2) đều uống loại sữa này trước khi bị ốm, nên đây có thể là sữa hỏng. Nếu đúng như vậy, người 3 cũng đã uống nó, nên tổng cộng 3 người sẽ bị ốm (người 3 sẽ bị ốm sau buổi tiệc).
Sữa 2: Cả hai người bị ốm đều uống loại sữa này trước khi bị ốm, nên đây cũng có thể là sữa hỏng. Không ai khác uống loại sữa này, vì vậy trong trường hợp xấu nhất sẽ có tổng cộng 2 người bị ốm nếu đây là sữa hỏng.
Sữa 3: Đây không thể là sữa hỏng vì người 1 không uống nó trước khi bị ốm — người 1 uống nó tại thời điểm 4 nhưng bị ốm tại thời điểm 3. Để sữa 3 có thể là nguyên nhân khiến người 1 bị ốm, người 1 phải uống loại sữa này muộn nhất tại thời điểm 2.
Sữa 4: Đây không thể là sữa hỏng vì người 2 không uống nó nhưng vẫn bị ốm.
Vì vậy, đáp án là Farmer John phải chuẩn bị 3 liều thuốc, bởi nếu sữa 1 bị hỏng thì tổng cộng 3 người sẽ cần được chữa trị.
Nguồn
USACO 2015 December Contest, Bronze - Contaminated Milk: https://usaco.org/index.php?page=viewproblem2&cpid=569
Tác giả: Austin Anderson và Brian Dean.
Kỳ thi:
- USACO 2015 - Tháng 12 - Hạng Đồng (1 Tháng 12., 2015)
Bình luận