Trò chơi (HSG9 VT 2023)
Nhân kỷ niệm ngày thành lập Đoàn, cô Tổng phụ trách tổ chức 1 trò chơi có thưởng cho các bạn lớp 9 như sau: Có N ô vuông được vẽ thẳng hàng trên sân trường, các ô vuông được đánh số từ 1, 2, \dots, N. Mỗi ô vuông i (1\le i\le N) có giá trị năng lượng là h_i. Một bạn học sinh đang ở ô vuông thứ i, bạn ấy có thể nhảy tới ô vuông tiếp theo các cách:
- Nếu bạn ở ô vuông thứ i thì bạn có thể nhảy đến ô vuông thứ tự i+1,i+2,\dots,i+k
- Chi phí năng lượng của bạn tiêu hao cho 1 lần nhảy là |h_j-h_i| với h_j là ô vuông đích mà bạn nhảy tới
Bạn học sinh nào di chuyển từ ô số 1 đến ô số N với chi phí năng lượng thấp nhất sẽ được cô thưởng một phần quà
Yêu cầu: Hãy tìm chi phí thấp nhất để giúp các bạn học sinh nhảy từ ô vuông số 1 đến ô vuông thứ N
Input và Output
Input: (GAME.inp)
- Dòng đầu tiên chứa 2 số N và K cách nhau một ký tự trắng: N là số ô vuông, K là số ô vuông tối đa bạn học sinh có thể nhảy qua (2\le N\le 10^5,1\le K\le 100)
- Dòng thứ hai chứa N giá trị h_i (1\le h_i\le 10^4), mỗi số cách nhau một ký tự trắng chỉ phí năng lượng của ô vuông thứ i tương ứng
Output: (GAME.out)
- Một số nguyên duy nhất là tổng chi phí phát sinh tối thiểu
Bonus
- Bạn có thể giải quyết bài toán này với N\cdot K\le 10^8,N\le 10^6 ?
Subtasks
- Subtask 1 (10\%): N\le 25.
- Subtask 2 (30\%): N\le 10^5,K\le 100.
- Subtask 3 (60\%): Không có ràng buộc gì thêm.
Sample
Input (GAME.inp)
5 3
10 25 35 40 20
Output (GAME.out)
20
Note
Cách nhảy của bạn học sinh sẽ là: 1\rightarrow 2\rightarrow 5, tổng chi phí phát sinh sẽ là |25-10|+|20-25|=20
KHOIDONG
Ở một trường P nọ, các học sinh rất thích tiết thể dục. Thầy giáo dạy thể dục thường cho khởi động từ giữa
hàng, tức là thầy sắp xếp học sinh theo chiều cao từ nhỏ đến lớn, lúc này bạn khởi động đầu tiên là bạn ở giữa
hàng nếu hàng lẻ và bạn ở giữa hàng có chiều cao thấp hơn đối với hàng chẵn. Thầy giáo không nhớ tên học sinh
nhưng thầy ấy có thể ước lượng chiều cao của các nhóm học sinh đi vào sân thể dục.
Có n nhóm học sinh đi vào, nhóm thứ i có a[i] bạn và có chiều cao ước lượng như nhau là v[i].
Yêu cầu: Xác định chiều cao của bạn sẽ khởi động đầu tiên lần lượt theo thứ tự đi vào của các nhóm học sinh.
INPUT gồm nhiều dòng: dòng 1 chứa số nguyên dương n là số nhóm học sinh, n dòng tiếp theo mỗi
dòng chứa hai số nguyên dương v[i] và a[i] đại diện cho nhóm học sinh thứ i.
OUTPUT gồm nhiều dòng: dòng thứ i là chiều cao của học sinh sẽ khởi động khi các nhóm từ 1
đến i đã đi vào sân thể dục.
• 1 ≤ n ≤ 2e5.
• 1 ≤ v[i], a[i] ≤ 1e9.
TLE-oj Cup Round 8 - Trung vị
Cho một dãy A ban đầu rỗng. Bạn cần thực hiện q truy vấn, mỗi truy vấn thuộc một trong hai dạng sau:
- +\ u: thêm phần tử u vào dãy a. (u \ge 0)
- -\ u: xóa phần tử u khỏi dãy a. Dữ liệu vào đảm bảo dãy a tồn tại phần tử u.
Sau mỗi truy vấn, bạn cần in ra trung vị của dãy A. Trung vị của một dãy C có n phần tử là phần tử lớn thứ [\frac{n + 1}{2}] của dãy C. Nếu dãy A rỗng in ra -1.
Input, Output và Subtasks
Input: (MEDIAN.inp)
- Dòng đầu tiên gồm số nguyên dương q. (q \le 1000000)
- q dòng tiếp theo, mỗi dòng có dạng + u_i hoặc - u_i miêu tả truy vấn thứ i. (u_i \le 10^9).
Output: (MEDIAN.out)
- Với mỗi truy vấn, in ra trung vị của dãy A.
Subtasks
- Subtask 1 (20\%): u_i \le 100.
- Subtask 2 (20\%): q \le 1000.
- Subtask 3 (20\%): q \le 10000.
- Subtask 4 (20\%): q \le 100000.
- Subtask 5 (20\%): Không có giới hạn gì thêm.
Sample
Input (MEDIAN.inp)
5
+ 1
+ 2
+ 3
+ 4
- 2
Output (MEDIAN.out)
1
1
2
2
3
Note
- Sau truy vấn đầu tiên: A = (1) và có trung vị là 1.
- Sau truy vấn thứ hai: A = (1, 2) và có trung vị là 1.
- Sau truy vấn thứ ba: A = (1, 2, 3) và có trung vị là 2.
- Sau truy vấn thứ tư: A = (1, 2, 3, 4) và có trung vị là 2.
- Sau truy vấn thứ năm: A = (1, 3, 4) và có trung vị là 3.
TLE-oj Cup Round 8 - Truy vấn tổng
Cho một dãy a gồm n phần tử. Bạn phải thực hiện q truy vấn, mỗi truy vấn yêu cầu bạn phải tìm số r lớn nhất sao cho r \le n và (\Sigma^{i \le r}_{i = l}(a_i \times [u \le a_i \le v])) \le k. Trong đó:
- \Sigma^{i \le r}_{i = l} c_i là tổng các giá trị c_i mọi trường hợp i từ l đến r.
- [u \le a_i \le v] là hàm chân lý, trả về 1 (
true) khi và chỉ khi u \le a_i \le v và trả về 0 (false) trong các trường hợp còn lại.
Hay nói cách khác, bạn cần tìm giá trị r lớn nhất sao cho đoạn mã giả sau trả về một giá trị s \le k (lưu ý: r có thể bằng l - 1):
gán s bằng 0
với mọi i từ l đến r:
nếu u <= a_i <= v:
tăng s lên a_i
trả về s
Input, Output và Subtasks
Input: (QUERYSUM.inp)
- Dòng đầu tiên gồm hai số nguyên dương n, q. (n, q \le 100000)
- Dòng thứ hai gồm các số nguyên a_1, a_2, ..., a_n. (1 \le a_i \le 10^9).
- q dòng tiếp theo, mỗi dòng gồm 4 số nguyên dương l, u, v, k. (1 \le l \le n, 1 \le u \le v \le 10^9, 1 \le k \le 10^9)
Output: (QUERYSUM.out)
- In ra kết quả của q truy vấn trên q dòng, mỗi dòng là một truy vấn.
Subtasks
- Subtask 1 (15\%): u = 1, v = 10^9 và k bằng nhau qua mọi truy vấn.
- Subtask 2 (15\%): n \le 1000.
- Subtask 3 (15\%): a_i \le 500.
- Subtask 4 (15\%): v - u \le 5.
- Subtask 5 (20\%): u = 1.
- Subtask 6 (20\%): Không có giới hạn gì thêm.
Sample
Input (QUERYSUM.inp)
7 3
4 6 8 2 10 5 1
4 1 5 7
1 2 3 5
1 1 10 15
Output (QUERYSUM.out)
6
7
2
Note
- Truy vấn đầu tiên: Tìm được r tối đa bằng 6, trong đó có a_4 = 2, a_5 = 5 là số duy nhất thuộc đoạn [1, 5], do đó tổng giá trị là 7. Không thể có r = 7 vì lúc đó tổng giá trị sẽ là 8 do cũng có a_7 thuộc đoạn [1, 5].
- Truy vấn thứ hai: Tìm được r = 7. Trong đó có số a_4 = 2 thuộc đoạn [2, 3], do đó tổng giá trị là 2 bé hơn k.
TLE-oj Cup Round 7 - Hình chữ nhật
Cho một bảng hình chữ nhật có kích thước m \times n (m hàng n cột) và hai dãy số nguyên a_1, a_2, ..., a_m và b_1, b_2, ..., b_n. Ô ở hàng i cột j của bảng sẽ được điền số a_i + b_j. Bạn phải cắt ra k hình chữ nhật, mỗi hình chữ nhật có kích thước là h \times w (h hàng w cột, không được xoay), và các hình chữ nhật không được có ô chung (có thể chung đỉnh hoặc chung cạnh), sao cho tổng các số được ghi trên các ô của các hình chữ nhật là lớn nhất.
Input, Output và Subtasks
Input: (RECTS.inp)
- Dòng đầu tiên gồm 5 số nguyên dương: m, n, h, w, k. Dữ liệu đầu vào đảm bảo m \ge k \times h và n \ge k \times w.
- Dòng thứ hai gồm m số nguyên không âm a_1, a_2, ..., a_m (0 \le a_i \le 10^8).
- Dòng thứ ba gồm n số nguyên không âm b_1, b_2, ..., b_n (0 \le b_i \le 10^8).
Output: (RECTS.out)
- In ra tổng các số lớn nhất có thể đạt được.
Subtasks
| m, n \le 10, h = w = 1 | m, n \le 10 | m, n \le 100 | m, n \le 10^5 | Tổng | |
|---|---|---|---|---|---|
| k = 1 | 3\% | 6\% | 9\% | 12\% | 30\% |
| k = 2 | 3\% | 6\% | 9\% | 12\% | 30\% |
| k = 3 | 4\% | 8\% | 12\% | 16\% | 40\% |
| Tổng | 10\% | 20\% | 30\% | 40\% | 100\% |
Sample 1
Input (RECTS.inp)
3 4 2 2 1
1 1 2
1 1 1 1
Output (RECTS.out)
10
Note
| Cột 1 (1) | Cột 2 (1) | Cột 3 (1) | Cột 4 (1) | |
|---|---|---|---|---|
| Hàng 1 (1) | 2 | 2 | 2 | 2 |
| Hàng 2 (1) | 2 | 2 | 2 | 2 |
| Hàng 3 (2) | 3 | 3 | 3 | 3 |
Một trong những cách chọn tốt nhất là chọn các ô (2, 1), (2, 2), (3, 1), (3, 2) tạo thành hình vuông 2 \times 2 có tổng giá trị là 10.
Sample 2
Input (RECTS.inp)
4 4 2 2 2
1 3 2 0
1 1 1 1
Output (RECTS.out)
28
Note
| Cột 1 (1) | Cột 2 (1) | Cột 3 (1) | Cột 4 (1) | |
|---|---|---|---|---|
| Hàng 1 (1) | 2 | 2 | 2 | 2 |
| Hàng 2 (3) | 4 | 4 | 4 | 4 |
| Hàng 3 (2) | 3 | 3 | 3 | 3 |
| Hàng 3 (0) | 1 | 1 | 1 | 1 |
Cách chọn tối ưu là cách chọn hai hình chữ nhật:
- Hình chữ nhật thứ nhất có góc trái trên (2, 1) và góc phải dưới (3, 2).
- Hình chữ nhật thứ nhất có góc trái trên (2, 3) và góc phải dưới (3, 4).
Tổng giá trị của hai hình chữ nhật này là 28.
Sample 3
Input (RECTS.inp)
6 6 2 2 3
1 3 2 0 0 0
1 2 3 1 2 2
Output (RECTS.out)
52
Note
Cách chọn tối ưu là cách chọn ba hình chữ nhật:
- Hình chữ nhật thứ nhất có góc trái trên (1, 2) và góc phải dưới (2, 3).
- Hình chữ nhật thứ nhất có góc trái trên (3, 2) và góc phải dưới (4, 3).
- Hình chữ nhật thứ nhất có góc trái trên (5, 2) và góc phải dưới (6, 3).
Tổng giá trị của hai hình chữ nhật này là 52.
TLE-oj Cup Round 7 - Chia hết
Cho các số nguyên dương n, c, r và hai chữ số u \le v. Tìm số tự nhiên nhỏ nhất có n chữ số (có thể có các chữ số 0 ở đầu), chia c dư r và các chữ số của nó (tính cả các chữ số 0) lớn hơn hoặc bằng u và bé hơn hoặc bằng v.
Input, Output và Subtasks
Input: (DIVISIBLE.inp)
- Các số nguyên n, u, v, c, r trên cùng một dòng (0 \le u \le v \le 9, 1 \le r, c, n \le 2000).
Output: (DIVISIBLE.out)
- Một dòng duy nhất là số tự nhiên nhỏ nhất thỏa mãn đề bài. In ra chính xác n chữ số (kể cả các chữ số 0 ở đầu). Nếu không tồn tại in ra -1.
Subtasks
- Subtask 1 (5\%): u = r = 0.
- Subtask 2 (20\%): u = 0.
- Subtask 3 (5\%): u = v.
- Subtask 4 (10\%): n \le 7.
- Subtask 5 (10\%): n \le 9.
- Subtask 6 (15\%): c \in \{1; 2; 5\}.
- Subtask 7 (10\%): c, n \le 100.
- Subtask 8 (25\%): Không có giới hạn gì thêm.
Sample 1
Input (DIVISIBLE.inp)
2 5 9 12 0
Output (DIVISIBLE.out)
96
Note
- 96 = 12 \times 8 là số nguyên không âm nhỏ nhất chia hết cho 12 mà có các chữ số thuộc đoạn [5, 9].
Sample 2
Input (DIVISIBLE.inp)
2 0 9 12 0
Output (DIVISIBLE.out)
00
Note
- Số 0 chia hết cho mọi số nguyên dương.
TLEoj Contest #05 - Truy vấn AOX (bản khó)
Chắc hẳn các bạn còn nhớ bài TLE-oj Cup Round 6 - Truy vấn AOX của . Đây là bản khó của bài tập này. Bản khó và bản dễ chỉ khác nhau về phần dữ liệu
Bạn được cho 1 xâu a gồm n ký tự chỉ gồm các ký tự như &, |, ^ (tương đương với phép toán AND, OR, XOR). Bạn phải thực hiện q truy vấn:
- 1 k x: Cập nhật ký tự thứ k trong xâu a thành x (1\le k\le n, x thuộc 1 trong 3 loại ký tự như trên)
- 2 l r k u v: Tính độ đẹp của xâu trong đoạn [l,r] với các giá trị k,u,v (1\le l\le r\le n,1\le k\le 60,0\le u\le v<2^k)
định nghĩa độ đẹp của một xâu ký tự a độ dài x với các giá trị k,u,v như sau: Là số lượng dãy b thỏa mãn (0\le b_i<2^k):
Chú ý: Thứ tự thực hiện tính toán theo các ký tự của xâu a được thực hiện từ trái sang phải
VD: Xâu |^ với k=1,u=1,v=1 thì có các khả năng như sau:
0|0^0=00|0^1=10|1^0=10|1^1=01|0^0=11|0^1=01|1^0=11|1^1=0
Theo như kết quả ở trên, có 4 kết quả thỏa mãn. Vậy độ đẹp của xâu |^ với k=1,u=1,v=1 là 4
Nhiệm vụ của bạn là phải tính toán các kết quả của truy vấn 2. Vì kết quả rất lớn nên hãy xuất kết quả mod\ 10^9+7
Input, Output và Subtasks
Input: (bàn phím)
- Dòng đầu tiên gồm 2 số n và q (1\leq n,q\leq 2\cdot 10^5)
- Dòng thứ hai gồm duy nhất một xâu a
- Sau đó là q dòng, mỗi dòng nhập truy vấn như trên
Output: (màn hình)
- Với mỗi truy vấn loại 2, xuất ra kết quả cần tìm
Subtasks
Bài toán sẽ chia làm 3 nhóm subtask:
- Nhóm subtask 1 (10\%): n,q\le 20
- Nhóm subtask 2 (30\%): n,q\le 5000
- Nhóm subtask 3 (60\%): n,q\le 2\cdot 10^5
Với mỗi nhóm subtask sẽ có ràng buộc về các loại truy vấn như sau:
- Ràng buộc 1 (10\%): u=0,v=2^k-1 với mọi truy vấn loại 2.
- Ràng buộc 2 (20\%): k=1 với mọi truy vấn loại 2.
- Ràng buộc 3 (20\%): k\le 20 với mọi truy vấn loại 2.
- Ràng buộc 4 (50\%): Không có ràng buộc gì thêm
Sample
Input (bàn phím)
3 4
&|^
2 2 3 1 1 1
1 3 |
2 2 3 1 0 1
2 1 3 2 2 2
Output (màn hình)
4
8
39
Note
Trong truy vấn 1 đã giải thích ở trên nên sẽ không giải thích lại.
Trong truy vấn 2 dễ dàng nhận thấy với mọi dãy b kết quả có thể ra trong khoảng [0,1], mà có 8 dãy b có thể tạo nên xuất ra 8
TLEoj Contest #08 - Fibonacci lũy thừa
Ta định nghĩa F_i là số fibonacci thứ i với công thức như sau:
- Nếu i\le 2 thì F_i=1
- Ngược lại, F_i=F_{i-1}+F_{i-2}
Cho q truy vấn, mỗi truy vấn gồm 4 số a,b,c,M. Nhiệm vụ của bạn là phải tính F_{a^b}\text{ }mod\text{ }F_c. Vì kết quả có thể rất lớn nên hãy xuất kết quả mod\text{ }M
Input, Output và Scoring
Input (bàn phím)
- Dòng đầu tiên nhập số q chỉ số truy vấn (1\le q\le 5\cdot 10^5)
- Sau đó là q dòng, mỗi dòng nhập 4 số a,b,c,M (1\le a,b\le 10^{18},1\le c, M\le 10^9)
Output (màn hình)
- Xuất ra q dòng, dòng thứ i xuất ra kết quả tương ứng của truy vấn thứ i
Subtasks
- Subtask 1 (5\%): a^b\leq 88
- Subtask 2 (5\%): a^b\leq 10^{18},c\leq 88
- Subtask 3 (10\%): c\leq 88
- Subtask 4 (15\%): q\le 10^5
- Subtask 5 (15\%): q\le 2\cdot 10^5
- Subtask 6 (50\%): Không có ràng buộc gì thêm.
Sample
Input (bàn phím)
4
3 3 3 10
3 3 5 10
3 3 5 2
4 16 15 300
Output (màn hình)
0
3
1
77
Notes
Trong truy vấn 1, ta có F_{3^3}\text{ }mod\text{ }F_3=196418\text{ }mod\text{ }2=0, 0\text{ }mod\text{ }10=0
Trong truy vấn 2, ta có F_{3^3}\text{ }mod\text{ }F_5=196418\text{ }mod\text{ }5=3, 3\text{ }mod\text{ }10=3
Trong truy vấn 3, ta có F_{3^3}\text{ }mod\text{ }F_5=196418\text{ }mod\text{ }5=3, 3\text{ }mod\text{ }2=1
TLEoj Contest #09 - Người ngoài hành tinh (Chắc chắn không phải Aliens)
"Vệ tinh của chúng ta vừa phát hiện ra một nền văn minh mới ở một hành tinh xa xôi. Chúng ta đã chụp được 1 tấm ảnh low-res có dạng 1 hình vuông N\times N của hành tinh. Bức ảnh cho thấy nhiều dấu hiệu của sự sống văn minh, và các nhà khoa học đã xác định được m điểm đáng quan tâm trên tấm ảnh này. Các điểm trong bức ảnh được đánh số từ 0 đến m-1 ............"
Đấy đã là chuyện của 7 năm trước.
7 năm sau kể từ cái ngày mà bài Aliens đã phổ biến cái thuật toán DP China siêu ảo ma đấy cho các thí sinh trên toàn thế giới, mọi thứ đã thay đổi ít nhiều. Giờ đây, ai cũng biết đến Alien trick. Người người nhà nhà đều biết đến Alien trick. Thằng nhóc lớp 1 mới bập bẹ được 1-2 câu bằng tiếng Anh cũng biết đường nói "Using this formula, all g_i can be computed in O(n) time using Convex Hull Trick optimization, if all l_i and r_i are sorted beforehand. The solution from subtask 5 can also be modified to find the minimum number of photos required to achieve the optimum, call it p(C)". Mẹ bạn, bà của bạn và cả cụ của bạn cũng biết đến Alien trick. Mọi bài DP chia đoạn giờ đều trở nên vô nghĩa - cứ ốp Alien trick vào rồi chỉnh công thức truy hồi là AC trong 30s.
Là một coder đã mất hoàn toàn khả năng giao tiếp với gái (human female beings) sau 3 năm ròng chỉ ngồi ru rú trong nhà và 1 đấm AC tất cả các bài trong tất cả các kì thi OI của các nước, khu vực, và quốc tế (và cả liên hành tinh luôn, sau khi nó sẽ được tổ chức lần đầu tiên vào năm sau với sự góp mặt của tầm 1000 thí sinh đến từ sao Hỏa, dự tính là vậy), bạn mong muốn tìm được 1 sinh vật ngoài hành tinh nào đó làm partner để cảm thấy đỡ cô đơn. Tuy nhiên, việc tìm kiếm này xem ra không hề dễ.
Bề mặt của hành tinh được coi là 1 lưới vuông N\times N, trong đó các hàng được đánh số từ 1\rightarrow N, các cột được đánh số từ 1\rightarrow N. Trên bề mặt hành tinh có M vị trí có thể có bạn đời tương lai của bạn, và bạn muốn khảo sát hết tất cả các điểm này bằng cách chụp các bức ảnh từ 1 vệ tinh mà bạn thuê được. Với mọi 1\le i\le M, điểm thứ i nằm ở hàng X[i], cột Y[i].
Sau từng ấy năm, ngành công nghệ vũ trụ đã phát triển hơn nhiều. Thay vì chỉ có 1 vệ tinh có quỹ đạo di chuyển trên đường chéo Y=X, giờ đã có P vệ tinh, vệ tinh thứ a (1\le a\le P) chỉ có thể di chuyển trên đường chéo có chỉ số là B[a]. Đường chéo b gồm tất cả các ô i trên bề mặt hành tinh mà có X[i]+Y[i]=b.
Ngành công nghệ chụp ảnh cũng đã tiến bộ hơn rất nhiều: Thay vì mất 1 đơn vị tiền tệ cho mỗi ô được chụp (không tính lặp), giờ đây, sử dụng kiến thức siêu tà đạo về việc giảm từ 2 chiều xuống còn 1 chiều, các pháp sư Trung Hoa đã khiến cho việc chụp 1 bức ảnh dạng hình vuông C\times C chỉ mất đúng C đơn vị tiền tệ. Tuy nhiên, các vệ tinh vẫn chỉ có thể chụp được các bức ảnh thỏa mãn điều kiện cũ:
- Vùng được chụp bởi mỗi tấm ảnh là 1 hình vuông có 2 góc trái trên và phải dưới thuộc đường chéo là quỹ đạo của vệ tinh đó.
- Tọa độ của cả 4 góc của hình vuông là nguyên. Bức ảnh được phép chụp cả những ô không nằm trong bảng
Dù mọi thứ đã thay đổi nhiều là vậy, vẫn có 1 điều chưa thay đổi: Bạn vẫn nghèo vcl. Vì vậy, bạn cần phải tìm cách chụp tối đa K tấm ảnh sao cho:
- Tất cả các điểm trong số M điểm quan trọng đều được chụp trong ít nhất 1 tấm ảnh
- Tổng chi phí để chụp K tấm ảnh là nhỏ nhất
- Bạn chỉ được phép thuê đúng 1 trong số P vệ tinh để chụp ảnh, vì từ vệ tinh thứ 2 trở đi bạn sẽ phải trả inf\times (inf^{inf}) đơn vị tiền tệ (điều này rất tệ cho tình hình kinh tế của bạn và gia đình bạn)
Input, Output và Scoring
Input (bàn phím)
- Dòng 1: 4 số N,M,P,K\ (1\le P\le 10^5, 1\le N\le 10^9, 1\le K\le M\le 10^5)
- Dòng 2: P số B[1],B[2],.....,B[P]. Dữ liệu đề bài đảm bảo các B[i] được sắp xếp theo thứ tự tăng dần.
- M dòng tiếp theo, dòng thứ i chứa 2 số X[i] và Y[i].
Output (màn hình)
1 số nguyên là chi phí nhỏ nhất để chụp mọi điểm trong số M điểm đặc biệt ít nhất 1 lần.
Subtasks
- Subtask 1 (20\%): P=1; B[1]=N+1 ; K\le M\le 50. Với mọi i thỏa mãn 1\le i\le M, X[i]=N+1-Y[i];
- Subtask 2 (25\%): P\le 50, N\le 10^9, K\le M\le 500
- Subtask 3 (25\%): P\le 1000, N\le 10^9, K\le M\le 1000
- Subtask 4 (30\%): Không có ràng buộc gì thêm.
Sample
Input (bàn phím)
7 4 3 2
4 8 10
1 3
5 5
5 6
6 7
Output (màn hình)
6
Notes

Sample
Input (bàn phím)
5 4 2 2
5 7
2 2
2 4
3 3
5 3
Output (màn hình)
4
Notes

Giải thích:
- 2 hình vuông màu xanh dương là 1 cách để chụp tất cả các vị trí quan trọng bằng 2 bức ảnh, với chi phí bỏ ra là 8 (không tối ưu)
- Hình vuông màu vàng là 1 cách để chụp tất cả các vị trí quan trọng bằng 1 bức ảnh, với chi phí bỏ ra là 5 (không tối ưu)
- Hình vuông màu đỏ là 1 cách để chụp tất cả các vị trí quan trọng bằng 1 bức ảnh, với chi phí bỏ ra là 4 (tối ưu)
TLE-oj Cup Round 8 - Gcd về 0
Bạn được cho 2 số n và m. Mỗi bước bạn được trừ n cho ước chung lớn nhất của n và m. Nhiệm vụ của bạn là đếm số bước để đưa n về 0
Input, Output và Subtasks
Input: (GCDTOZERO.inp)
- Dòng đầu tiên gồm 2 số n và m (n\le 10^{18},m\le 10^{16})
Output: (GCDTOZERO.out)
- Một số duy nhất là kết quả của bài toán
Subtasks
- Subtask 1 (10\%): n\le 10^6.
- Subtask 2 (10\%): n\le 10^8.
- Subtask 3 (10\%): n\le 10^{10}.
- Subtask 4 (15\%): n\le 10^{12}.
- Subtask 5 (15\%): n\le 10^{14}.
- Subtask 6 (15\%): n\le 10^{16}.
- Subtask 7 (25\%): Không có ràng buộc gì thêm
Sample
Input (GCDTOZERO.inp)
10 3
Output (GCDTOZERO.out)
4
TLE-oj Cup Round 5 - MEX đoạn con
Cho a = a_1, a_2, ..., a_n là một dãy số nguyên không âm. Hãy đếm số cách chia dãy a thành các đoạn con liên tiếp, sao cho MEX của các đoạn con, theo thứ tự, tạo thành một dãy không giảm. Ở đây, MEX của đoạn con [i..j] là số nguyên không âm nhỏ nhất không xuất hiện trong \{a_i, a_{i + 1}, ..., a_j\}
Input, Output và Subtasks
Input: (SMEX.inp)
- Dòng đầu tiên chứa số nguyên dương n (n \le 5000).
- Dòng tiếp theo là n số nguyên a_1, a_2, ..., a_n (a_i \le 10^9).
Output: (SMEX.out)
- Một dòng duy nhất là kết quả bài toán. Vì kết quả có thể rất lớn nên chỉ cần in phần dư của số cách tìm được khi chia cho 10^9+7.
Subtasks
- Subtask 1 (25\%): n \le 100.
- Subtask 2 (25\%): a_i \le 100.
- Subtask 3 (25\%): n \le 2000.
- Subtask 4 (25\%): Không có giới hạn gì thêm.
Sample 1
Input (SMEX.inp)
8
3 0 2 1 0 1 3 2
Output (SMEX.out)
8
TLE-oj Cup Round 6 - Hoán vị khác nhau
Cho một số nguyên dương n. Xét một hoán vị A = (1, 2, 3, ..., n). Bạn phải sử dụng chính xác n! - 1 thao tác, mỗi thao tác sẽ đổi chỗ hai số trong dãy A, để tạo ra tất cả các hoán vị cùa dãy (1, 2, 3, ..., n).
Định nghĩa: Dãy số A được xem là hoán vị của dãy số B khi và chỉ khi nếu sắp xếp lại hai dãy số A và B theo thứ tự tăng dần, ta thu được hai dãy giống hệt nhau. Ví dụ (2, 1, 3) là hoán vị của (1, 2, 3), nhưng (1, 2, 4) thì không.
Input, Output và Subtasks
Input: (PERMUTATION.inp)
- Một dòng duy nhất gồm số nguyên dương n (2 \le n \le 10).
Output: (PERMUTATION.out)
- Gồm n! - 1 dòng, mỗi dòng gồm hai số nguyên dương i, j miêu tả việc đổi chỗ A_i và A_j.
Subtasks
- Đề bài có 9 test, test thứ i có n = i + 1.
Sample 1
Input (PERMUTATION.inp)
2
Output (PERMUTATION.out)
1 2
Note
Các hoán vị được tạo ra là: hoán vị ban đầu (1, 2) và hoán vị (2, 1).
Sample 2
Input (PERMUTATION.inp)
3
Output (PERMUTATION.out)
1 2
1 3
1 2
1 3
1 2
Note
Các hoán vị được tạo ra là:
- Hoán vị ban đầu: (1, 2, 3).
- Sau thao tác 1: (2, 1, 3).
- Sau thao tác 2: (3, 1, 2).
- Sau thao tác 3: (1, 3, 2).
- Sau thao tác 4: (2, 3, 1).
- Sau thao tác 5: (3, 2, 1).
TLE-oj Cup Round 6 - Chuỗi bit khác nhau
Cho một số nguyên dương n. Xét một chuỗi nhị phân có n bit với các bit ban đầu đều là 0. Bạn phải sử dụng chính xác 2^n - 1 thao tác, mỗi thao tác sẽ thay đổi trạng thái của một bit, để tạo ra tất cả chuỗi bit có n bit..
Input, Output và Subtasks
Input: (BITSET.inp)
- Một dòng duy nhất gồm số nguyên dương n (1 \le n \le 22).
Output: (BITSET.out)
- Gồm 2^n - 1 dòng, mỗi dòng gồm một số nguyên dương i miêu tả thao tác thay đổi trạng thái bit thứ i.
Subtasks
- Đề bài có 22 test, test thứ i có n = i.
Sample 1
Input (BITSET.inp)
2
Output (BITSET.out)
1
2
1
Note
Các dãy bit thu được sau khi thực hiện các thao tác như sau:
- Ban đầu: 00.
- Thao tác 1: 10.
- Thao tác 2: 11.
- Thao tác 3: 01.
TLE-oj Cup Round 6 - Phân tích dãy ngoặc đúng
Một dãy ngoặc đúng là một xâu thỏa mãn tính chất sau:
- Xâu đó là một xâu rỗng, hoặc
- Xâu đó có dạng (A), với A là một dãy ngoặc đúng, hoặc
- Xâu đó có thể được tách thành hai xâu AB, với A, B là các dãy ngoặc đúng khác xâu rỗng.
Với định nghĩa trên, giả sử dãy ngoặc đúng có độ dài 2n thì nó sẽ có n ngoặc mở và n ngoặc đóng.
Một cách phân tích một dãy ngoặc đúng a có độ dài 2n được định nghĩa là một cách đặt các số 1, 2, ..., 2n thành n cặp (x_1, x_2), (x_3, x_4), ..., (x_{2n-1}, x_{2n}) sao cho thỏa mãn các điều kiện sau:
- x_{2i-1} < x_{2i} với mọi 1 \le i \le n.
- x_{2i-1} < x_{2i+1} với mọi 1 \le i < n.
- a_{2i-1} là ngoặc mở và a_{2i} là ngoặc đóng với mọi 1 \le i \le n.
- Nếu bỏ đi hai ký tự ở vị trí thuộc cùng một cặp (x_{2i-1}, x_{2i}) bất kỳ thì dãy ngoặc thu được vẫn là dãy ngoặc đúng.
Ví dụ: Một cách phân tích dãy ngoặc (()()) đó là phân tích thành các cặp (1, 3), (2, 6), (4, 5), vì
- 1 < 2 < 4, 1 < 3, 2 < 6 và 4 < 5.
- Nếu bỏ đi cặp (1, 3) hoặc cặp (4, 5) thì dãy ngoặc còn lại sẽ là (()), vẫn là dãy ngoặc đúng.
- Nếu bỏ đi cặp (2, 6) thì dãy ngoặc còn lại sẽ là ()().
Cho một dãy ngoặc đúng a. Bạn hãy đếm số cách phân tích dãy ngoặc đúng a theo định nghĩa như trên.
Input, Output và Subtasks
Input: (PARAS.inp)
- Một dòng duy nhất là dãy ngoặc đúng a có độ dài không quá 10^7.
Output: (PARAS.out)
- Một dòng duy nhất là kết quả bài toán. Vì kết quả có thể rất lớn nên chỉ cần in phần dư của số cách tìm được khi chia cho 10^9+7.
Subtasks
- Subtask 1 (12\%): |a| \le 20.
- Subtask 2 (16\%): |a| \le 40.
- Subtask 3 (20\%): |a| \le 1000.
- Subtask 4 (24\%): |a| \le 100000.
- Subtask 4 (28\%): Không có giới hạn gì thêm.
Sample 1
Input (PARAS.inp)
(()())
Output (PARAS.out)
4
Note
Các cách phân tích dãy ngoặc a:
- (1, 3), (2, 6), (4, 5).
- (1, 3), (2, 5), (4, 6).
- (1, 5), (2, 3), (4, 6).
- (1, 6), (2, 3), (4, 5).
Sample 2
Input (PARAS.inp)
(())
Output (PARAS.out)
2
Note
Các cách phân tích dãy ngoặc a:
- (1, 3), (2, 4).
- (1, 4), (2, 3).
TLE-oj Cup Round 6 - Truy vấn AOX
Bạn được cho 1 xâu a gồm n ký tự chỉ gồm các ký tự như &, |, ^ (tương đương với phép toán AND, OR, XOR). Bạn phải thực hiện q truy vấn:
- 1 k x: Cập nhật ký tự thứ k trong xâu a thành x (1\le k\le n, x thuộc 1 trong 3 loại ký tự như trên)
- 2 l r k u v: Tính độ đẹp của xâu trong đoạn [l,r] với các giá trị k,u,v (1\le l\le r\le n,1\le k\le 20,0\le u\le v<2^k)
định nghĩa độ đẹp của một xâu ký tự a độ dài x với các giá trị k,u,v như sau: Là số lượng dãy b thỏa mãn (0\le b_i<2^k):
Chú ý: Thứ tự thực hiện tính toán theo các ký tự của xâu a được thực hiện từ trái sang phải
VD: Xâu |^ với k=1,u=1,v=1 thì có các khả năng như sau:
0|0^0=00|0^1=10|1^0=10|1^1=01|0^0=11|0^1=01|1^0=11|1^1=0
Theo như kết quả ở trên, có 4 kết quả thỏa mãn. Vậy độ đẹp của xâu |^ với k=1,u=1,v=1 là 4
Nhiệm vụ của bạn là phải tính toán các kết quả của truy vấn 2. Vì kết quả rất lớn nên hãy xuất kết quả mod\ 10^9+7
Input, Output và Subtasks
Input: (AOXQUERIES.inp)
- Dòng đầu tiên gồm 2 số n và q (1\leq n,q\leq 5\cdot 10^3)
- Dòng thứ hai gồm duy nhất một xâu a
- Sau đó là q dòng, mỗi dòng nhập truy vấn như trên
Output: (AOXQUERIES.out)
- Với mỗi truy vấn loại 2, xuất ra kết quả cần tìm
Subtasks
- Subtask 1 (5\%): n,q\le 20, k=1 với mọi truy vấn loại 2.
- Subtask 2 (10\%): n,q\le 20.
- Subtask 3 (10\%): u=0,v=2^k-1 với mọi truy vấn loại 2.
- Subtask 4 (10\%): k=1 với mọi truy vấn loại 2.
- Subtask 5 (15\%): u=v với mọi truy vấn loại 2.
- Subtask 6 (50\%): Không có ràng buộc gì thêm
Sample
Input (AOXQUERIES.inp)
3 4
&|^
2 2 3 1 1 1
1 3 |
2 2 3 1 0 1
2 1 3 2 2 2
Output (AOXQUERIES.out)
4
8
39
Note
Trong truy vấn 1 đã giải thích ở trên nên sẽ không giải thích lại.
Trong truy vấn 2 dễ dàng nhận thấy với mọi dãy b kết quả có thể ra trong khoảng [0,1], mà có 8 dãy b có thể tạo nên xuất ra 8
TLE-oj Cup Round 7 - Đoán số (Interactive)
Trong máy tính có hai số nguyên dương A và B, và bạn chỉ biết được số B, nhưng bạn biết được rằng A, B \le 2 \times 10^5. Bạn cần tìm số A trong không quá 3 thao tác giao tiếp với máy chấm. Với mỗi thao tác, bạn cần đưa ra một số m \le 2 \times 10^{6}, và máy chấm sẽ trả về giá trị A^B sau khi đã chia lấy dư cho m.
Bài nộp của bạn được chấm qua các testcases. Trong mỗi testcase có thể có nhiều subtest, các subtest này được chấm điểm riêng biệt.
Hướng dẫn cách giao tiếp với máy chấm
Để câu trả lời của bạn có thể đến được với máy chấm, bạn cần phải flush output của mình ra. Sau đây là cách flush output ở một vài ngôn ngữ phổ biến
- C++:
cout << endl;. - Pascal:
flush(output). - Python:
stdout.flush(). - Java:
System.out.flush().
Để hiểu rõ hơn, bạn có thể đọc blog của codeforces tại đây: https://codeforces.com/blog/entry/45307
Lưu ý: Một số test/submit có thể có verdict Time limit exceed khi cả chương trình của bạn và máy chấm đều cùng muốn nhập input. Lúc này máy chấm và chương trình của bạn đều chờ output của nhau và sẽ hết thời gian.
Lưu ý: Bạn có thể chạy thử chương trình interactive trên máy của chính mình.
Input, Output và Subtasks
Interaction: (stdin / stdout)
- Đầu tiên, chương trình của bạn cần nhập vào số nguyên dương T \le 25 - số subtest.
- Với mỗi subtest, các hành động sau sẽ xảy ra:
- Đầu tiên, chương trình của bạn cần nhập vào số nguyên dương b.
- Tiếp theo, bạn cần phải in ra một trong hai loại truy vấn
? m- được gọi là truy vấn hỏi - hoặc= a- được gọi là truy vấn trả lời, trong đó,? mlà truy vấn hỏi kết quả của phép tính A^B \mod m, còn= alà truy vấn trả lời kết quả là a. - Nếu truy vấn bạn vừa xuất ra là truy vấn trả lời, bạn sẽ đến với subtest mới. Ngược lại, bạn cần nhập vào một số nguyên dương là kết quả phép tính A^B \mod m và quay trở lại bước 2.
Scoring
- Trong mỗi subtest:
- Bạn sẽ được tính 100\% số điểm của subtest đó khi trả lời đúng số a và dùng 1 truy vấn hỏi.
- Bạn sẽ được tính 20\% số điểm của subtest đó khi trả lời đúng số a và dùng 2 truy vấn hỏi.
- Bạn sẽ được tính 4\% số điểm của subtest đó khi trả lời đúng số a và dùng 3 truy vấn hỏi.
- Nếu đã dùng hết 3 truy vấn hỏi trong một subtest, bạn phải đưa ra câu trả lời. Nếu dùng đến truy vấn hỏi thứ tư hoặc output không đúng format bạn sẽ bị tính 0 điểm cả testcase.
- Nếu trả lời sai số a, bạn sẽ không có điểm cho subtest đó.
- Điểm của testcase sẽ là điểm trung bình của tất cả các subtest. Nếu số điểm của testcase bàng 1 thì sẽ có verdict
Accepted, ngược lại sẽ có verdictWrong answer.
- Có 20\% số testcase, mà trong đó, ở mỗi subtest, B = 1.
- Các testcase còn lại (80\%) không có giới hạn gì thêm.
Sample
Interaction: (stdin / stdout)
| Máy chấm | Chương trình nộp | Giải thích |
|---|---|---|
2 |
T=2, testcase này có 2 subtest. | |
3 |
Ở subtest đầu tiên, B=3 | |
? 5 |
Bạn thử với m = 5 | |
3 |
A^3 \mod 5 = 3 | |
= 2 |
Bạn đoán A = 2, và may mắn đúng. Bạn được 100\% số điểm của subtest đầu tiên. | |
2 |
Ở subtest thứ hai, B=2 | |
? 5 |
Bạn thử với m = 5 | |
0 |
A^2 \mod 5 = 0 | |
? 7 |
Bạn thử với m = 7 | |
2 |
A^2 \mod 7 = 2 | |
= 10 |
Bạn đoán A = 10, và may mắn đúng. Bạn được 20\% số điểm cho subtest thứ hai. |
Chung cuộc bạn được 60\% số điểm của testcase.
Hàng cây sân trường (HSG9 NA 2023)
Ngôi trường của Tuấn chuẩn bị kỉ niệm ngày thành lập trường. Nhà trường đã trồng một hàng cây xanh trông rất đẹp. Hàng cây gồm n cây xanh được đánh số thứ tự từ 1 đến n (theo hướng từ trái sang phải) và cách đều nhau, tức là khoảng cách giữa hai cây kề nhau là không đổi.
Để tưới nước cho cây, nhà trường có kế hoạch lắp đặt m (1\leq m\leq n) vòi tưới nước tự động. Vòi nước thứ i (i=1,2,3,...,m) được lắp tại vị trí cây thứ X_i thì có thể tưới nước cho cây thứ X_i và R_i cây liền kề bên trái và R_i cây liền kề bên phải vòi nước đó, tức là vòi thứ i sẽ tưới nước cho cây thứ j nếu |j-X_i|\leq R_i. R_i được gọi là bán kính tưới nước của vòi thứ i.
Cho biết vị trí lắp m vòi nước tại m cây có số thứ tự là X_1, X_2, ..., X_m (1\leq X_1<X_2<\cdots<X_m\leq n) và các bán kính tưới nước là R_1, R_2, ..., R_m (1\leq R_1, R_2, ..., R_m\leq 100).
Yêu cầu: Tính xem, có bao nhiêu cây được tưới nước khi lắp m vòi nước tự động như trên. Một cây được tưới nước nếu có ít nhất một vòi nước có thể tưới nước cho cây đó.
Input, Output và Subtasks
Input: (HangCay.inp)
- Dòng 1 ghi hai số nguyên dương n và m (2\leq n\leq 2000) tương ứng là số cây và số vòi nước.
- m dòng tiếp theo, dòng thứ i (i=1,2,3,...,m) ghi hai số nguyên X_i, R_i. Trong đó X_i là số thứ tự của cây đặt vòi nước thứ i, R_i là bán kính tưới nước.
Output: (HangCay.out)
- Gồm một số nguyên duy nhất là số cây được tưới nước.
Subtasks
- Có 30\% số test ứng với 30\% số điểm thỏa mãn 2\leq n\leq 200; m=1.
- Có 30\% số test ứng với 30\% số điểm thỏa mãn 2\leq n\leq 200; không có hai vòi nước trở lên có thể cùng tưới nước cho cùng một cây.
- Có 40\% số test ứng với 30\% số điểm thỏa mãn 200<n\leq 2000; 2\leq m\leq n.
Sample
Input (HangCay.inp)
8 2
2 2
5 1
Output (HangCay.out)
6
Notes
- Vòi nước 1 đặt tại cây thứ 2, có thể tưới nước cho các cây thứ 1,2,3,4.
- Vòi nước 2 đặt tại cây thứ 5, có thể tưới nước cho các cây thứ 4,5,6.
Vậy có 6 cây được tưới nước.
Mật độ xuất hiện cao (HSG9 NA 2023)
Trò chơi chọn bóng mà nhóm của Tuấn thiết kế được bạn bè và giáo viên trong trường đánh giá rất cao. Sau thành công này, Tuấn cùng nhóm bạn tập trung học tập để thi vào lớp chuyên tin của một trường chuyên danh giá trong tỉnh. Những bài tập mà Tuấn làm đều yêu cầu kỹ năng thiết kế thuật toán chuyên nghiệp. Một trong các bài tập mà bạn ấy đang xây dựng thuật toán có nội dung như sau:
Cho chuỗi kí tự S chỉ gồm các kí tự chữ cái latinh thường từ a, ..., z. Một chuỗi con X (gồm các kí tự ở vị trí liên tiếp) của S được gọi là một chuỗi có mật độ xuất hiện cao nếu trong chuỗi X có một kí tự mà số lần xuất hiện của kí tự đó nhiều hơn số các kí tự còn lại trong chuỗi X.
Ví dụ, chuỗi S=abbbabced, chuỗi con X=abbbabc là một chuỗi có mật độ xuất hiện cao, vì có kí tự b xuất hiện 4 lần, số các kí tự còn lại là 3. Nếu X=abbbabce, kí tự xuất hiện nhiều lần nhất 4 lần (kí tự b) và số kí tự còn lại là 4. Do vậy chuỗi X=abbbabce không phải là một chuỗi có mật độ xuất hiện cao.
Yêu cầu: Tìm một chuỗi con X (gồm các kí tự ở vị trí liên tiếp) của S là một chuỗi có mật độ xuất hiện cao và độ dài lớn nhất.
Tuấn cũng đã có thuật toán của mình, còn bạn thì sao? Hãy lập trình giải bài toán trên để đối chiếu kết quả nhé.
Input, Output và Subtasks
Input: (MatDo.inp)
- Gồm một chuỗi kí tự S chỉ gồm các kí tự chữ cái latinh thường và có độ dài không lớn hơn 2\times 10^5.
Output: (MatDo.out)
- Gồm một số nguyên duy nhất là độ dài của chuỗi X tìm được.
Subtasks
- Có 30\% số test ứng với 30\% số điểm thỏa mãn:
Chuỗi S chỉ gồm các kí tự thuốc tập 3 kí tự \{a,b,c\} và độ dài chuỗi S không quá 2\times 10^5. - Có 30\% số test ứng với 30\% số điểm thỏa mãn:
Chuỗi S chỉ gồm các kí tự chữ cái latinh thường và độ dài chuỗi S không quá 2\times 10^3. - Có 40\% số test ứng với 40\% số điểm thỏa mãn:
Chuỗi S chỉ gồm các kí tự chữ cái latinh thường và độ dài chuỗi S không quá 2\times 10^5.
Sample
Input (MatDo.inp)
abbbabced
Output (MatDo.out)
7
Notes
Ta có thể chọn chuỗi X thỏa mãn là:
X=abbbabc hoặc X=bbbabce.
Sample
Input (MatDo.inp)
ababab
Output (MatDo.out)
5
Notes
Ta có thể chọn chuỗi X thỏa mãn là:
X=ababa vì kí tự a xuất hiện 3 lần, số các kí tự còn lại là 2.
hoặc X=babab vì kí tự b xuất hiện 3 lần, số các kí tự còn lại là 2.
Sample
Input (MatDo.inp)
abc
Output (MatDo.out)
1
Notes
Ta có thể chọn chuỗi X thỏa mãn là:
X=a vì kí tự a xuất hiện 1 lần, số các kí tự còn lại là 0.
hoặc X=b, X=c đều thỏa mãn.
Trò chơi chọn bóng (HSG9 NA 2023)
Ngày thành lập Đoàn 26/3 sắp đến. Tuấn cùng nhóm bạn của mình được giao thiết kế một trò chơi trí tuệ dành cho các đoàn viên trong trường. Sau một thời gian tìm hiểu và nghiện cứu, nhóm của Tuấn đã xây dựng một trò chơi có nội dung như sau:
Một rổ bóng có n quả bóng. Các quả bóng được đánh số từ 1 đến n. Quả bóng thứ i có màu được mã hóa bởi một số nguyên dương c_i (1\leq c_i\leq k), trong đó k là số màu khác nhau trong n quả bóng. Mỗi lần chời, người chơi sẽ chọn hai quả bóng khác màu trong rổ bóng và đưa hai quả bóng này ra khỏi rổ. Người chơi sẽ dừng lại khi trong rổ không còn quả bóng nào hoặc không có hai quả bóng khác màu. Số bóng được lấy ra khỏi rổ là số điểm của người chơi.
Tuấn cùng nhóm bạn muốn biết người chơi có thể đạt được điểm lớn nhất là bao nhiêu? Bạn hãy lập trình để tìm kết quả này nhé.
Input, Output và Subtasks
Input: (ChonBong.inp)
- Dòng 1 ghi hai số nguyên n và k (2\leq k\leq n\leq 2\times 10^5) tương ứng là số quả bóng trong rổ và số màu khác nhau của n quả bóng.
- Dòng 2 ghi n số nguyên dương c_1, c_2, ..., c_n (1\leq c_i\leq k) tương ứng là mã màu của n quả bóng.
Output: (ChonBong.out)
- Gồm một số nguyên duy nhất là số điểm lớn nhất người chơi có thể nhận được.
Subtasks
- Có 20\% số test ứng với 20\% số điểm thỏa mãn 2\leq n\leq 2000; k=2.
- Có 30\% số test ứng với 30\% số điểm thỏa mãn 2\leq n\leq 2000; k=3.
- Có 30\% số test ứng với 30\% số điểm thỏa mãn 4\leq n\leq 2000; 3<k\leq n.
- Có 20\% số test ứng với 20\% số điểm thỏa mãn 2000<n\leq 2\times 10^5; 3<k\leq n.
Sample
Input (ChonBong.inp)
6 2
1 2 2 1 1 1
Output (ChonBong.out)
4
Notes
- Lần 1: Chọn quả bóng thứ 1 và thứ 2 với mã màu tương ứng là 1 và 2.
- Lần 2: Chọn quả bóng thứ 3 và thứ 4 với mã màu tương ứng là 2 và 1.
- Trong rổ bóng lúc này còn 2 quả thứ 5, 6 đều có mã màu bằng 1. Trò chơi kết thúc và người chơi được 4 điểm. Đây là số điểm cao nhất mà người chơi có thể nhận được.
Sample
Input (ChonBong.inp)
4 3
3 3 1 2
Output (ChonBong.out)
4
Notes
- Lần 1: Chọn quả bóng thứ 1 và thứ 3 với mã màu tương ứng là 3 và 1.
- Lần 2: Chọn quả bóng thứ 2 và thứ 4 với mã màu tương ứng là 3 và 2.
- Trong rổ bóng lúc này không còn quả bóng nào. Trò chơi kết thúc và người chơi được 4 điểm. Đây là số điểm cao nhất mà người chơi có thể nhận được.
Cặp số nguyên tố cùng nhau (HSG9 NA 2023)
Tuấn là một học sinh rất yêu thích Tin học. Ước mơ của cậu sau này là trở thành một lập trình viên tài năng. Tuấn thường xuyên tìm hiểu các thông tin, sự kiện liên quan đến Công nghệ. Một sự kiện công nghệ nổi tiếng trên toàn thế giới trong thời gian gần đây là sự ra mắt robot thông minh ChatGPT của công ty công nghệ OpenAI. Tuấn cũng rất tò mò về ChatGPT nên đã sử dụng để giải bài toán. Bài toán mà Tuấn đưa cho ChatGPT như sau:
Cho số nguyên dương n. Tìm số lượng các số nguyên dương x nhỏ hơn n thỏa mãn: x và n là hai số nguyên tố cùng nhau (tức là ước chung lớn nhất của x và n bằng 1).
Thật là thú vị, khi Tuấn nhập n=5. ChatGPT đưa ra kết quả là: Có 4 số, cụ thể là các số: 1,2,3,4. Tuấn muốn các bạn lập trình giải bài toán này để cùng kiểm tra kết quả của ChatGPT nhé.
Input, Output và Subtasks
Input: (NTCN.inp)
- Gồm một số nguyên dương n (2\leq n\leq 10^9).
Output: (NTCN.out)
- Gồm một số nguyên duy nhất là số lượng số nguyên dương x, nhỏ hơn n và nguyên tố cùng nhau với n.
Subtasks
- Có 50\% số test ứng với 50\% số điểm thỏa mãn 2\leq n\leq 2000.
- Có 40\% số test ứng với 40\% số điểm thỏa mãn 2000<n\leq 2\times 10^6.
- Có 10\% số test ứng với 10\% số điểm thỏa mãn 2\times 10^6<n\leq 2\times 10^9.
Sample
Input (NTCN.inp)
5
Output (NTCN.out)
4
Notes
n=5, trong 4 số 1,2,3,4 nhỏ hơn n. Có 4 số thỏa mãn: x=1,2,3,4 là các số nguyên tố cùng nhau với n.
Sample
Input (NTCN.inp)
10
Output (NTCN.out)
4
Notes
n=10, trong 9 số 1,2,3,4,5,6,7,8,9 nhỏ hơn n. Có 4 số thỏa mãn: x=1,3,7,9 là các số nguyên tố cùng nhau với n.