| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | USACO 2026 - It's Mooin' Time IV | 333 (p) | 4.0s | 512M |
| 2 | USACO 2026 - Moo Hunt | 333 (p) | 4.0s | 512M |
| 3 | USACO 2026 - Purchasing Milk | 334 (p) | 4.0s | 512M |
Bessie có một chiếc máy tính với bàn phím chỉ có hai chữ cái là M và O.
Bessie muốn gõ tiếng bò yêu thích của mình là \(S\), gồm \(N\) chữ cái, mỗi chữ cái là M hoặc O. Tuy nhiên, máy tính của cô đã bị nhiễm vi-rút. Mỗi khi cô cố gõ chữ O, mọi chữ cái cô đã gõ từ trước đến lúc đó đều bị đảo, từ M thành O hoặc từ O thành M, rồi chữ O mới xuất hiện.
Liệu Bessie có thể gõ được tiếng bò yêu thích của mình hay không?
Ngoài ra, Bessie được cho một tham số \(k\) có giá trị bằng \(0\) hoặc \(1\).
Dòng đầu tiên chứa \(T\), số lượng bộ test độc lập (\(1\le T\le 10^4\)), và \(k\) (\(0\le k\le 1\)).
Dòng đầu tiên của mỗi bộ test chứa \(N\) (\(1\le N\le 2\cdot 10^5\)).
Dòng thứ hai của mỗi bộ test chứa \(S\). Đảm bảo rằng \(S\) không chứa ký tự nào ngoài M và O.
Tổng \(N\) trên tất cả các bộ test không vượt quá \(4\cdot 10^5\).
Với mỗi bộ test, hãy in một hoặc hai dòng theo quy trình sau.
Nếu Bessie không thể gõ được \(S\), hãy in NO trên một dòng.
Ngược lại, ở dòng đầu tiên hãy in YES. Ngoài ra, nếu \(k=1\), ở dòng thứ hai hãy in một xâu độ dài \(N\), gồm các ký tự theo đúng thứ tự Bessie cần gõ để tạo ra tiếng bò yêu thích của mình. Nếu có nhiều xâu thỏa mãn, có thể in bất kỳ xâu nào.
Ví dụ 1
2 0
3
MOO
5
OOMOO
YES
YES
Ví dụ 2
2 1
3
MOO
5
OOMOO
YES
OMO
YES
MOOMO
Khi Bessie lần lượt gõ MOOMO, các chữ cái thay đổi như sau:
M đầu tiên, Bessie có một xâu rỗng. Sau đó, cô có xâu M.O đầu tiên, chữ M bị đảo thành O, rồi chữ O được nối vào để tạo thành OO.O thứ hai, OO bị đảo thành MM, rồi chữ O được nối vào để tạo thành MMO.M thứ hai, Bessie có xâu MMOM.O cuối cùng, xâu MMOM bị đảo thành OOMO, rồi chữ O được nối vào để tạo thành OOMOO như mong muốn.USACO 2026 Contest 2, Bronze Division — bài gốc It's Mooin' Time IV, tác giả: Nick Wu.
https://usaco.org/index.php?page=viewproblem2&cpid=1563
Bessie đang chơi trò chơi nổi tiếng "Moo Hunt". Trong trò chơi này, có \(N\) (\(3\le N\le 20\)) ô nằm trên một hàng, được đánh số từ \(1\) đến \(N\). Mỗi ô chứa ký tự M hoặc O, trong đó ô thứ \(i\) chứa ký tự \(s_i\).
Bessie dự định thực hiện \(K\) (\(1\le K\le 2\cdot 10^5\)) lượt chơi. Trong lượt thứ \(i\), Bessie sẽ chạm vào \(3\) ô khác nhau \((x_i,y_i,z_i)\) (\(1\le x_i,y_i,z_i\le N\)). Bessie nhận được một điểm nếu \(s_{x_i}=M\) và \(s_{y_i}=s_{z_i}=O\). Nói cách khác, Bessie nhận được một điểm nếu tạo thành xâu MOO bằng cách lần lượt chạm vào các ô \(x_i,y_i,z_i\) theo thứ tự đó.
Farmer John muốn giúp Bessie lập kỷ lục mới. Ông muốn bạn tìm điểm số lớn nhất Bessie có thể đạt được trong số tất cả các bảng có thể có khi cô thực hiện \(K\) lượt chơi, đồng thời tìm số lượng bảng khác nhau cho phép Bessie đạt được điểm số lớn nhất này. Hai bảng được coi là khác nhau nếu tồn tại một ô mà ký tự tương ứng tại ô đó khác nhau.
Dòng đầu tiên chứa \(N\) và \(K\), lần lượt là số ô và số lượt chơi Bessie sẽ thực hiện.
Mỗi dòng trong \(K\) dòng tiếp theo chứa \(x_i,y_i,z_i\), mô tả lượt chơi thứ \(i\) của Bessie (\(x_i,y_i,z_i\) đôi một khác nhau).
In ra điểm số lớn nhất Bessie có thể đạt được, tiếp theo là số lượng bảng khác nhau cho phép Bessie đạt được điểm số lớn nhất này.
Ví dụ 1
5 6
1 2 3
1 2 3
1 3 5
2 3 4
5 3 2
5 2 3
4 2
Hai bảng MOOOM và MOOMM cho phép Bessie đạt điểm số lớn nhất là \(4\). Trên cả hai bảng, Bessie nhận được điểm ở các lượt \(1,2,5,6\). Có thể chứng minh rằng đây là điểm số lớn nhất Bessie có thể đạt được và hai bảng trên là những bảng duy nhất cho phép Bessie đạt điểm số \(4\).
Ví dụ 2
6 12
2 4 3
2 3 4
3 5 2
3 5 1
3 1 5
3 1 2
6 1 5
1 6 4
2 3 6
3 6 2
4 1 6
3 4 2
6 3
Các bảng cho phép Bessie đạt điểm số lớn nhất là \(6\) gồm OOMOOO, OOMMOO và OOMOOM.
USACO 2026 Contest 2, Bronze Division — bài gốc Moo Hunt, tác giả: Alex Liang.
https://usaco.org/index.php?page=viewproblem2&cpid=1564
Nhân Ngày Sữa Quốc gia, Farmer John đang đưa ra mức giá đặc biệt cho các xô sữa! Ông có \(N\) (\(1\leq N\leq 10^5\)) ưu đãi được đánh số từ \(1\) đến \(N\). Với ưu đãi thứ \(i\), ông bán \(2^{i-1}\) xô sữa với giá \(a_i\) (\(1\leq a_i\leq 10^9\), \(a_i<a_{i+1}\)) mooney. Có thể sử dụng cùng một ưu đãi với số lần là bất kỳ số nguyên không âm nào.
Bạn đang cân nhắc \(Q\) (\(1\leq Q\leq 10^4\)) truy vấn độc lập. Với mỗi truy vấn, bạn nghĩ đến một số nguyên \(x\) (\(1\leq x\leq 10^9\)) và muốn biết chi phí nhỏ nhất để mua ít nhất \(x\) xô sữa.
Dòng đầu tiên chứa hai số nguyên \(N\) và \(Q\).
Dòng tiếp theo chứa \(a_1,a_2,\ldots,a_N\).
Mỗi dòng trong \(Q\) dòng tiếp theo chứa một số nguyên \(x\), biểu diễn một truy vấn.
Với mỗi truy vấn, in chi phí nhỏ nhất trên một dòng mới.
Lưu ý rằng các số nguyên có giá trị lớn trong bài toán này có thể yêu cầu sử dụng kiểu số nguyên 64 bit (ví dụ: long long trong C/C++).
Ví dụ 1
2 4
10 15
1
2
6
7
10
15
45
55
Trong ví dụ trên, Farmer John đưa ra \(2\) ưu đãi: \(1\) xô sữa với giá \(10\) mooney và \(2\) xô sữa với giá \(15\) mooney.
Chi phí thấp nhất để mua \(1\) xô chính là giá của ưu đãi \(1\) xô, và chi phí thấp nhất để mua \(2\) xô chính là giá của ưu đãi \(2\) xô.
Để có \(6\) xô, cách rẻ nhất là mua ưu đãi \(2\) xô tổng cộng \(3\) lần, với tổng chi phí là \(45\) mooney.
Để có \(7\) xô, cách rẻ nhất là mua ưu đãi \(2\) xô tổng cộng \(3\) lần và ưu đãi \(1\) xô một lần, với tổng chi phí là \(55\) mooney.
Ví dụ 2
4 10
10 25 30 70
1
2
3
4
5
6
7
8
15
101
10
20
30
30
40
50
60
60
120
760
Trong ví dụ này, Farmer John đưa ra tổng cộng \(4\) ưu đãi tương ứng với \(1\), \(2\), \(4\) và \(8\) xô. Với mỗi truy vấn trong \(10\) truy vấn, kết quả tương ứng cho biết chi phí nhỏ nhất để mua ít nhất lượng sữa đó. Đôi khi, mua nhiều hơn lượng được chỉ định lại rẻ hơn.
USACO 2026 Contest 2, Bronze Division — bài gốc Purchasing Milk, tác giả: Chongtian Ma.
https://usaco.org/index.php?page=viewproblem2&cpid=1565