USACO 2026 - Kỳ thi 3 - Hạng Bạc

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 USACO 2026 - Clash! 100 (p) 4.0s 512M
2 USACO 2026 - Milk Buckets 100 (p) 4.0s 512M
3 USACO 2026 - Point Elimination 100 (p) 4.0s 512M

1. USACO 2026 - Clash!

Điểm: 100 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Nông dân John đang chơi một trò chơi bài chiến thuật nổi tiếng với cô bò Bessie thân yêu. FJ có \(N\) (\(2\le N\le 2\cdot 10^5\)) lá bài, được đánh số từ \(1\) đến \(N\). Nếu FJ muốn đánh lá bài thứ \(i\), lá bài đó tốn \(a_i\) (\(1 \leq a_i \leq 10^9\)) moolixir.

Tại mọi thời điểm, tay bài của FJ luôn gồm \(H\) lá (\(1\le H<N\)). Ban đầu, tay bài gồm các lá từ \(1\) đến \(H\). Những lá còn lại nằm trong một hàng đợi rút bài. Mỗi khi FJ đánh một lá trên tay, anh sẽ rút lá ở đầu hàng đợi lên tay để thay thế, rồi đưa lá vừa đánh xuống cuối hàng đợi. Ban đầu, các lá từ \(H+1\) đến \(N\) được xếp theo đúng thứ tự đó từ đầu đến cuối hàng đợi.

Trong trò chơi này, thời gian được tính bằng số giây nguyên. Trò chơi bắt đầu ở thời điểm \(0\), khi FJ có \(0\) moolixir. Ngay trước mỗi thời điểm nguyên \(t=1,2,3,\dots\), lượng moolixir tăng thêm \(1\). Tại mỗi thời điểm nguyên, FJ có thể chọn đánh một lá trên tay nếu chi phí của nó không vượt quá lượng moolixir hiện có; khi đó, lượng moolixir của FJ giảm đi đúng bằng chi phí của lá bài.

FJ đánh dấu một tập con các lá bài \(s_1,s_2,\ldots,s_k\) làm điều kiện thắng (\(1\le k\le N\), \(1\le s_i\le N\)). Nếu trên tay FJ có ít nhất một lá điều kiện thắng, lá tiếp theo anh đánh bắt buộc phải là một lá điều kiện thắng.

FJ hỏi bạn \(Q\) (\(1\le Q\le 2\cdot 10^5\)) truy vấn. Mỗi truy vấn có dạng: trong vòng \(t\) đơn vị thời gian (\(1\le t\le 10^{18}\)), số lá điều kiện thắng lớn nhất mà FJ có thể đánh xuống là bao nhiêu?

Dữ liệu vào

Dòng đầu tiên chứa \(N\)\(H\).

Dòng thứ hai chứa \(N\) số nguyên \(a_1,a_2,\ldots,a_N\).

Dòng thứ ba chứa số nguyên \(k\), là số lá điều kiện thắng.

Dòng thứ tư chứa \(k\) số nguyên phân biệt \(s_1,s_2,\ldots,s_k\).

Dòng thứ năm chứa số nguyên \(Q\).

Mỗi dòng trong \(Q\) dòng tiếp theo chứa một số nguyên \(t\), là thời điểm cần trả lời cho truy vấn tương ứng.

Dữ liệu ra

Với mỗi truy vấn, hãy in ra số lá điều kiện thắng lớn nhất mà FJ có thể đánh xuống trong vòng \(t\) đơn vị thời gian.

Ví dụ

Ví dụ 1

Input
6 3
2 4 3 5 7 6
2
1 4
6
1
2
3
7
10
1000000000000000
Output
0
1
1
2
2
142857142857143
Note

Trong trường hợp này, ban đầu lá bài \(1\), một lá điều kiện thắng, nằm trên tay bạn. Bạn có thể đánh nó sau khi tích lũy được \(2\) moolixir trong \(2\) giây. Vì vậy, ngay sau \(t=1\) bạn chưa thể đánh lá nào, nhưng sau \(t=2\) bạn có thể đánh lá đầu tiên, và lá này bắt buộc phải là lá điều kiện thắng.

Sau \(t=3\), phương án tối ưu vẫn là đánh lá bài \(1\) và còn lại \(1\) moolixir, nên đáp án vẫn là \(1\).

Sau đó, bạn rút lá bài \(4\), cũng là một lá điều kiện thắng. Bạn đánh nó ngay sau \(t=7\), nên tại thời điểm này bạn đã đánh \(2\) lá điều kiện thắng.

Tiếp theo, bạn rút lá bài \(5\) và không còn lá điều kiện thắng nào trên tay. Sau \(t=10\), dù bạn có đánh lá bài \(3\) bằng \(3\) moolixir đang có, số lá điều kiện thắng đã đánh cũng không thay đổi.

Phân nhóm

  • Test 2–3: \(N,Q\le 100\).
  • Test 4–5: \(H=1\).
  • Test 6–11: Không có ràng buộc bổ sung.

Nguồn

USACO 2026 Contest 3, Silver Division — bài gốc tiếng Anh “Clash!”. Tác giả: Chongtian Ma. https://usaco.org/index.php?page=viewproblem2&cpid=1590

2. USACO 2026 - Milk Buckets

Điểm: 100 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

\(N\) (\(1\le N\le 2\cdot 10^5\)) chiếc xô xếp thành một chồng, trong đó chiếc xô thứ \(i\) tính từ trên xuống có sức chứa \(a_i\) gallon (\(1\le a_i\le 10^9\)). Một vòi ở phía trên chiếc xô đầu tiên rót mỗi giây một gallon sữa vào chiếc xô này. Bên dưới xô \(N\) còn có một bể chứa.

Khi một chiếc xô đạt sức chứa của nó sau \(t\) giây, vào đầu giây thứ \(t+1\), nó lật úp để đổ lượng sữa bên trong vào chiếc xô phía dưới nếu nó không phải xô cuối cùng, hoặc vào bể chứa nếu không còn xô nào bên dưới (chiếc xô trở lại trạng thái hứng sữa vào cuối giây thứ \(t+1\)). Một chiếc xô không thể hứng sữa khi đang lật úp; mọi lượng sữa chảy tới chiếc xô đó từ phía trên trong giây này đều bị mất. Ngoài ra, mọi lượng sữa vượt quá sức chứa của chiếc xô phía dưới cũng bị mất.

Hãy xử lý \(Q\) (\(1\le Q\le 3\cdot 10^5\)) truy vấn, mỗi truy vấn được mô tả bởi ba số nguyên \(i\), \(v\)\(t\):

  1. Trước tiên, gán \(a_i=v\) (\(1\le i\le N\), \(1\le v\le 10^9\)).
  2. Sau đó trả lời câu hỏi sau: Giả sử tại thời điểm \(0\), tất cả các xô và bể chứa đều rỗng. Hãy xác định số gallon sữa trong bể sau \(t\) giây (\(1\le t\le 10^{18}\)).

Các cập nhật \(a_i=v\) vẫn có hiệu lực trong những truy vấn tiếp theo.

Dữ liệu vào

Dòng đầu tiên chứa \(N\).

Dòng thứ hai chứa \(a_1,\dots,a_N\).

Dòng tiếp theo chứa \(Q\).

Mỗi dòng trong \(Q\) dòng sau chứa ba số nguyên \(i\), \(v\)\(t\). Điều này có nghĩa là bạn cần gán \(a_i=v\), rồi trả lời câu hỏi ứng với \(t\).

Dữ liệu ra

In đáp án của mỗi truy vấn trên một dòng riêng.

Ví dụ

Ví dụ 1

Input
3
1 1 1
30
1 1 1
1 1 2
1 1 3
1 1 4
1 1 5
1 1 6
1 1 7
1 1 8
1 1 9
1 1 10
1 2 1
1 2 2
1 2 3
1 2 4
1 2 5
1 2 6
1 2 7
1 2 8
1 2 9
1 2 10
2 2 1
2 2 2
2 2 3
2 2 4
2 2 5
2 2 6
2 2 7
2 2 8
2 2 9
2 2 10
Output
0
0
0
1
1
2
2
3
3
4
0
0
0
0
1
1
1
2
2
2
0
0
0
0
1
1
1
2
2
2
Note

Khi \(a=[1,1,1]\):

  • \(1\) lật úp tại các thời điểm \(2,4,6,\dots\).
  • \(2\) lật úp tại các thời điểm \(3,5,7,\dots\).
  • \(3\) lật úp tại các thời điểm \(4,6,8,\dots\).

Khi \(a=[2,1,1]\):

  • \(1\) lật úp tại các thời điểm \(3,6,9,\dots\).
  • \(2\) lật úp tại các thời điểm \(4,7,10,\dots\).
  • \(3\) lật úp tại các thời điểm \(5,8,11,\dots\).

Khi \(a=[2,2,1]\):

  • \(1\) lật úp tại các thời điểm \(3,6,9,\dots\).
  • \(2\) lật úp tại các thời điểm \(4,7,10,\dots\).
  • \(3\) lật úp tại các thời điểm \(5,8,11,\dots\).

Ví dụ 2

Input
2
1 2
10
1 1 1
1 1 2
1 1 3
1 1 4
1 1 5
1 1 6
1 1 7
1 1 8
1 1 9
1 1 10
Output
0
0
0
0
2
2
2
2
4
4

Ví dụ 3

Input
3
1 1 1
1
1 1 1000000000000000000
Output
499999999999999999

Phân nhóm

  • Test 4–5: \(N\le 10\), \(Q\le 100\) và mọi \(t\le 10^4\).
  • Test 6–11: \(N\le 10^3\), \(Q\le 10^4\).
  • Test 12–23: Không có ràng buộc bổ sung.

Nguồn

USACO 2026 Contest 3, Silver Division — bài gốc tiếng Anh “Milk Buckets”. Tác giả: Akshaj Arora. https://usaco.org/index.php?page=viewproblem2&cpid=1591

3. USACO 2026 - Point Elimination

Điểm: 100 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bạn có \(N\) (\(2\le N\le 10^5\), \(N\) chẵn) điểm \((x_i,y_i)\) (\(1\le x_i,y_i\le 10^6\)) trên một mặt phẳng tọa độ hai chiều vô hạn.

Bạn có thể thực hiện hai loại thao tác sau đây bao nhiêu lần tùy ý:

  • Chọn hai điểm kề trực tiếp với nhau (khoảng cách Manhattan bằng \(1\)) và xóa cả hai điểm.
  • Chọn hai điểm bất kỳ và hoán đổi tọa độ \(y\) của chúng. Cụ thể, hai điểm \((a,b)\)\((c,d)\) lần lượt trở thành \((a,d)\)\((c,b)\).

Hãy xác định liệu có thể xóa hết tất cả các điểm trên mặt phẳng hay không. Lưu ý rằng hai điểm có thể nằm tại cùng một tọa độ; chúng vẫn phải được coi là hai điểm khác nhau. Bạn cũng không được trực tiếp xóa hai điểm nằm tại cùng một tọa độ, vì xét theo đúng định nghĩa, chúng không kề trực tiếp với nhau.

Dữ liệu vào

Dòng đầu tiên chứa \(T\) (\(1\le T\le 5000\)), là số lượng bộ test.

Dòng đầu tiên của mỗi bộ test chứa số nguyên \(N\).

\(N\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(x_i\)\(y_i\).

Đảm bảo tổng \(N\) trên tất cả các bộ test không vượt quá \(5\cdot 10^5\).

Dữ liệu ra

Với mỗi bộ test, in YES hoặc NO trên một dòng mới.

Ví dụ

Ví dụ 1

Input
4
2
1 1
1 1
4
6 10
7 11
8 1
8 1
6
1 2
1 3
1 4
1 5
10 10
11 10
6
1 1
1 1
1 1
1 1
10 10
11 11
Output
NO
YES
YES
NO
Note

Ở bộ test đầu tiên, hai điểm duy nhất trùng nhau nên mọi phép hoán đổi đều không làm thay đổi điều gì. Vì vậy, đáp án là NO.

Ở bộ test thứ hai, ta có thể hoán đổi tọa độ \(y\) của các điểm có tọa độ \(x\)\(6\)\(7\) với hai điểm có tọa độ \(x\)\(8\). Sau đó, ta có thể xóa hai điểm đầu tiên (kề nhau theo phương ngang) và hai điểm cuối cùng (kề nhau theo phương dọc).

Ở bộ test thứ ba, không cần thực hiện phép hoán đổi nào. Ta có thể lần lượt xóa cặp thứ nhất, cặp thứ hai và cặp thứ ba.

Ở bộ test cuối cùng, có thể chứng minh rằng dù hoán đổi các tọa độ \(y\) như thế nào, ta cũng không bao giờ có thể xóa hết các điểm theo từng cặp kề nhau.

Phân nhóm

  • Test 2: \(T\le 1000\), \(N\le 6\).
  • Test 3–5: \(N\le 100\).
  • Test 6–11: Không có ràng buộc bổ sung.

Nguồn

USACO 2026 Contest 3, Silver Division — bài gốc tiếng Anh “Point Elimination”. Tác giả: Alex Pylypenko và Chongtian Ma. https://usaco.org/index.php?page=viewproblem2&cpid=1592