| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | USACO 2026 - Make All Distinct | 100 (p) | 4.0s | 512M |
| 2 | USACO 2026 - Strange Function | 100 (p) | 4.0s | 512M |
| 3 | USACO 2026 - Swap to Win | 100 (p) | 4.0s | 512M |
Bạn có một mảng số nguyên \(a_1\dots a_N\), ban đầu các phần tử nằm trong đoạn \([1,N]\) (\(1\le N\le 2\cdot 10^5\)), cùng với một số nguyên khác không \(K\) (\(-N\le K\le N, K\neq 0\)).
Bạn có thể thực hiện thao tác sau bao nhiêu lần tùy thích (có thể không lần nào): chọn một chỉ số \(i\) và gán \(a_i=a_i+K\).
Hãy tìm số thao tác ít nhất để tất cả các phần tử của mảng đôi một khác nhau.
Dữ liệu vào gồm \(T\) (\(1\le T\le 10\)) bộ test độc lập. Mỗi bộ test được mô tả như sau:
Dòng đầu tiên chứa \(N\) và \(K\).
Dòng thứ hai chứa \(a_1\dots a_N\).
Đảm bảo tổng \(N\) trên tất cả các bộ test không vượt quá \(10^6\).
Với mỗi bộ test, in một dòng chứa số thao tác ít nhất.
Lưu ý: Do các số nguyên trong bài có thể rất lớn, bạn có thể cần sử dụng kiểu số nguyên 64 bit (ví dụ, long long trong C/C++).
Ví dụ 1
4
4 1
4 1 4 1
4 -3
4 1 4 1
4 4
4 1 4 1
3 -1
1 1 2
2
4
2
1
Với bộ test đầu tiên, dưới đây là một dãy gồm hai thao tác giúp tất cả các phần tử đôi một khác nhau:
4 1 4 1
5 1 4 1 (a_1 += 1)
5 1 4 2 (a_4 += 1)
USACO 2026 Contest 3, Bronze — Make All Distinct. Tác giả: Akshaj Arora, Benjamin Qi.
https://usaco.org/index.php?page=viewproblem2&cpid=1587
Với mọi số nguyên dương \(x\), hàm \(f(x)\) được định nghĩa như sau:
Cho một giá trị \(x\) (\(1\leq x<10^{2\cdot 10^5}\)), hãy tìm số lần cần áp dụng \(f\) lên \(x\) để \(x\) trở thành \(0\). Vì số này có thể rất lớn, hãy in phần dư của nó khi chia cho \(10^9+7\).
Dòng đầu tiên chứa \(T\) (\(1\le T\le 10^5\)), số lượng bộ test độc lập.
\(T\) dòng tiếp theo, mỗi dòng chứa một số nguyên dương \(x\) chỉ gồm các chữ số từ 0 đến 9 và không có chữ số \(0\) ở đầu.
Đảm bảo tổng số chữ số trong tất cả các số nguyên đầu vào không vượt quá \(10^6\).
Với mỗi bộ test, in trên một dòng riêng phần dư của số lần cần áp dụng hàm khi chia cho \(10^9+7\).
Ví dụ 1
2
24680
210
1
4
Bộ test thứ nhất: \(x\) trở thành \(0\) sau một thao tác.
Bộ test thứ hai: \(f(x)=10, f^2(x)=9, f^3(x)=1, f^4(x)=0\).
Ví dụ 2
1
1234567890123456789012345678901234567890
511620083
USACO 2026 Contest 3, Bronze — Strange Function. Tác giả: Aidan Bai.
https://usaco.org/index.php?page=viewproblem2&cpid=1588
Farmer John có một xâu yêu thích \(t\) gồm \(M\) ký tự. Ông cũng có \(N\) xâu \(s_1,s_2,\ldots,s_N\), mỗi xâu gồm \(M\) ký tự (\(1\leq N,M\leq 1000\)).
FJ có thể thực hiện hai loại thao tác sau:
Mục tiêu của ông là biến \(s_1\) thành \(t\). Hãy tìm một dãy thao tác bất kỳ đạt được mục tiêu này. Vì FJ đang vội, ông chỉ có thời gian thực hiện tổng cộng tối đa \(2M\) thao tác. Dữ liệu vào đảm bảo có thể đạt được mục tiêu của FJ.
Dòng đầu tiên chứa \(T\) (\(1\le T\le 10\)), số lượng bộ test độc lập. Mỗi bộ test có định dạng sau:
Dòng đầu tiên chứa \(N\) và \(M\).
Dòng thứ hai chứa \(t\).
Tiếp theo là \(N\) dòng, dòng thứ \(i\) chứa \(s_i\).
Dữ liệu vào đảm bảo có thể đạt được mục tiêu của FJ. Tất cả các xâu chỉ chứa các chữ cái tiếng Anh viết thường (a-z).
Với mỗi bộ test, hãy xuất kết quả như sau:
Trên dòng đầu tiên, in một số nguyên \(K\), là số thao tác bạn sẽ thực hiện. \(K\) phải là một số nguyên không âm không vượt quá \(2M\).
Sau đó, in \(K\) dòng mô tả các thao tác bạn sẽ thực hiện theo thứ tự. Mỗi dòng phải có một trong hai dạng sau:
1 x p q2 x y kVí dụ 1
3
3 6
banana
nabana
banana
nnbaaa
5 3
abc
def
bca
ghi
jkl
mno
3 5
abcde
abcde
abcde
zzzzz
3
2 1 2 1
1 1 3 5
2 1 2 5
5
1 2 1 3
2 1 2 1
1 2 2 3
2 1 2 2
2 1 2 3
0
Dưới đây là cách các xâu \(s\) thay đổi theo kết quả của bộ test đầu tiên (các chữ cái được hoán đổi được viết hoa):
nabana Babana baNaBa banaNa
banana -> Nanana -> nanana -> nanaBa
nnbaaa nnbaaa nnbaaa nnbaaa
Sau cả ba thao tác, \(s_1=t\).
USACO 2026 Contest 3, Bronze — Swap to Win. Tác giả: Chongtian Ma.
https://usaco.org/index.php?page=viewproblem2&cpid=1589