Trò chơi (Bà Rịa Vũng Tàu 2023)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
GAME.INP - Tệp ra:
GAME.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
TLE Speedrun - Tổng bình phương
Input và Output
Input
- Dòng đầu tiên gồm một số nguyên dương N (N \le 5 \times 10^4).
Output
- Tổng các giá trị (i - j)^2 với mọi 1 \le i, j \le N.
Sample
Input
3
Output
12
TLEoj Contest #01 - Cặp số đầy đủ
Bạn được cho một hoán vị a độ dài n. Một cặp số (l,r) được gọi là cặp số đầy đủ nếu với mọi l\le i\le r thì l\le a_i\le r.
Bạn được cho q truy vấn, mỗi truy vấn gồm 2 số l,r. Nhiệm vụ của bạn là với mỗi truy vấn, hãy đếm số lượng cặp số (u,v)\ (l\le u\le v\le r) thỏa mãn (u,v) là cặp số đầy đủ
Input, Output và Subtasks
Input
- Dòng đầu tiên gồm 2 số nguyên dương n và q (1 \le n,q \le 10^5).
- Dòng tiếp theo gồm n số nguyên dương a_1,a_2,\dots,a_n\ (1\le a_i\le n). Các giá trị a_i đôi một phân biệt
- q dòng tiếp theo, mỗi dòng gồm 2 giá trị l,r (1\le l\le r\le n)
Output
- Với mỗi truy vấn, xuất ra kết quả tương ứng trong một dòng
Subtasks
- Subtask 1 (25\%): n\le 1000.
- Subtask 2 (25\%): q=1,l=1,r=n
- Subtask 3 (50\%): Không có ràng buộc gì thêm
Sample
Input
4 4
1 2 4 3
1 4
1 2
2 4
3 4
Output
6
3
3
1
Note
- Các cặp số đầy đủ: (1,1), (1,2), (1,4), (2,2), (2,4), (3,4)
TLEoj Contest #07 - Knapsack đơn giản
Chắc hẳn các bạn đã biết về bài toán cái túi, hay knapsack. Bài toán này là một phiên bản khác của bài toán cái túi.
Có n món đồ, món đồ thứ i có cân nặng a_i. An chọn một số món đồ sao cho tổng cân nặng của chúng đúng bằng m và muốn biết rằng có bao nhiêu cách chọn đồ như vậy. Một món đồ có thể chọn 0 lần, 1 lần hoặc nhiều hơn 1 lần, hai cách chọn được gọi là khác nhau nếu có một món đồ chọn nhiều hoặc ít hơn cách chọn kia. Hãy giúp bạn An đếm nhé
Input, Output và Subtasks
Input: (standard input)
- Dòng đầu gồm hai số nguyên dương n và m (1\leq n\leq 10).
- Dòng tiếp theo gồm n số nguyên dương a_1,a_2,...,a_n (1\leq a_i\leq 20).
Output: (standard output)
- In ra một số là số cách chọn mod 10^9+7.
Subtasks
- Subtask 1 (40\%): m\leq 2000
- Subtask 2 (20\%): n=2, m\leq 10^{18}
- Subtask 3 (40\%): m\leq 10^{18}
Sample
Input (standard input)
3 4
1 2 3
Output (standard output)
4
Quản lý ngày công (Huế (TP Huế) 2023)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
DAY.INP - Tệp ra:
DAY.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Trọng số tối đa
Trọng số của một dãy số nguyên là tổng của dãy nhân với số phần tử của dãy. Ví dụ trọng số của dãy (4,-2,3,1) là 6\cdot 4=24
Cho dãy số nguyên a=a_1,a_2,\dots,a_n. Hãy tách a thành các dãy con (không nhất thiết kề nhau) sao cho tổng trọng số của các dãy con là lớn nhất có thể
Input, Output và Subtasks
Input
- Dòng đầu tiên chứa số nguyên dương n (n\le 10^5)
- Dòng thứ hai chứa n số nguyên a_1,a_2,\dots,a_n (-10^8\le a_i\le 10^8)
Output
- Một số nguyên là tổng trọng số lớn nhất tìm được
Subtasks
- Subtask 1 (12\%): n \le 20
- Subtask 2 (28\%): n \le 1000
- Subtask 3 (60\%): Không có giới hạn gì thêm
Sample 1
Input
6
3 -1 -5 3 -2 6
Output
40
Trò chơi xâu ký tự (Bình Định 2023)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
STRGAME.INP - Tệp ra:
STRGAME.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
256MB
Truy lùng vị trí
Cabral đang truy lùng ataide trên mặt phẳng hệ tọa độ Descartes, biết ataide ban đầu ở vị trí (0;0).
Tại mỗi bước ataide sẽ chọn một hướng đi lên trên, xuống dưới, trái hoặc phải. Anh ấy sẽ tiếp tục đi thẳng đến khi nào gặp điểm mà anh ấy chưa từng đi qua, thì anh sẽ dừng lại và đi theo hướng tiếp theo. Tổng cộng anh ấy đã chọn chính xác n hướng.
Yêu cầu: biết các hướng đi của ataide hãy tìm điểm mà ataide ở đó sau n hướng đi.
Input, Output and Subtask
Input (TRUYLUNG.inp)
- Dòng đầu tiên chứa một số nguyên dương n và m (1≤n≤10^5)
- Dòng tiếp theo chứa xâu s có n kí tự
L,R,U,Dtương ứng với:
Lđi sang trái.
Rđi sang phải.
Uđi lên trên.
Dđi xuống dưới.
Output (TRUYLUNG.out)
- Dòng đầu tiên gồm hai số nguyên x và y tương ứng với vị trí (x,y) của ataide sau n hướng đi.
Subtask
- Subtask 1: (20\%) s_i=s_{i+1} với i\le n-1.
- Subtask 2: (30\%) n\le 1000.
- Subtask 3: (50\%) không có giới hạn gì thêm.
Sample
TRUYLUNG.inp
4
LRLR
TRUYLUNG.out
2 0
Note
Các vị trí mà ataide đã đi qua là (0;0)\rightarrow(-1;0)\rightarrow(1;0)\rightarrow(-2;0)\rightarrow(2;0).
Cộng một kiểu Đức (THTC2 ĐN 2023)
Đức vừa phát minh ra một phép toán cộng độc đáo và đặt tên cho nó là "cộng một kiểu Đức", cách cộng như sau: Mỗi lần cộng một số nguyên cho một thay vì tăng giá trị của số đó lên một đơn vị Đức lại tăng tất cả các chữ số của nó lên một đơn vị
VD1: 15 "cộng một kiểu Đức" sẽ cho kết quả là 26
VD2: 91 "cộng một kiểu Đức" sẽ cho kết quả là 102
Yêu cầu: Với T số nguyên dương N cho trước hãy tính toán và cho biết sau khi thực hiện K lần phép cộng một kiểu Đức thì kết quả sinh ra có bao nhiêu chữ số. Vì câu trả lời có thể rất lớn do đó hãy in ra kết quả sau khi mod\ 10^9+7
Input, Output và Subtasks
Input: (CONG.inp)
- Dòng thứ nhất chứa số nguyên T (1\le T\le 2\cdot 10^5)
- T dòng tiếp theo, mỗi dòng chứa 2 số nguyên lần lượt là N và K (1\le N\le 10^9,1\le K\le 2\cdot 10^5)
Output: (CONG.out)
- Với mỗi trường hợp in ra số lượng chữ số của kết quả chia lấy dư cho 10^9+7
Subtasks
- Subtask 1 (30\%): T\le 10,K\le 20
- Subtask 2 (20\%): T\le 100,K\le 50
- Subtask 3 (50\%): Không có ràng buộc gì thêm
Sample 1
Input (CONG.inp)
2
9812 2
9899 3
Output (CONG.out)
6
8
Note
9812\rightarrow 10923\rightarrow 211034
9899\rightarrow 1091010\rightarrow 21102121\rightarrow 32213232
Giúp mẹ (Huế 2024)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
GME.INP - Tệp ra:
GME.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Cây tìm kiếm nhị phân tối ưu
Cây nhị phân tìm kiếm (Binary Search Tree – BST) trên tập n khóa số nguyên là một cây nhị phân thỏa mãn: Mỗi nút chứa đúng một khóa và khóa trong một nút lớn hơn mọi khóa trong nhánh con trái và nhỏ hơn mọi khóa trong nhánh con phải. Có nhiều cấu trúc BST để biểu diễn một tập các khóa. Như hình dưới đây là hai BST biểu diễn tập các khóa \{1,2,3,4,5,6\}.

Quá trình tìm kiếm một giá trị x trên BST thực hiện như sau: Bắt đầu từ nút gốc, tại mỗi bước, x được so sánh với khóa tại nút đang đứng (y):
- Nếu x=y, quá trình tìm kiếm kết thúc, kết luận x có trong BST
- Nếu x<y, đi sang nhánh con trái và quá trình tìm kiếm tiếp tục trong cây con trái bằng cách tương tự
- Nếu x>y, đi sang nhánh con phải và quá trình tìm kiếm tiếp tục trong cây con phải bằng cách tương tự
Nếu tại một bước nào đó, thuật toán không thể đi tiếp được theo luật trên, quá trình tìm kiếm dừng và kết luận x không có trong BST.
Chi phí một phép tìm kiếm giá trị x bằng số phép so sánh khóa được thực hiện trong thuật toán. Như ở hình trên, để tìm khóa 3 trong cây (a) ta cần 3 phép so sánh trong khi đó để tìm khóa 3 trong cây (b) ta chỉ cần 2 phép so sánh.
Yêu cầu: Cho n khóa đánh số từ 1 tới n theo thứ tự tăng dần của các khóa, biết rằng người ta thực hiện c_i lần phép tìm kiếm khóa i trên cấu trúc BST biểu diễn tập khóa này (\forall i = 1,2,...,n). Hãy tìm cấu trúc BST sao cho tổng chi phí các phép tìm kiếm là nhỏ nhất.
Input, Output
Input: (OPTBST.inp)
- Dòng 1 chứa số nguyên dương n\leq 2000
- Dòng 2 chứa n số nguyên không âm c_1,c_2,...,c_n cách nhau bởi dấu cách (\forall i: c_i\leq 10^9)
Output: (OPTBST.out)
- Ghi ra một số nguyên duy nhất là tổng chi phí (tính bằng số phép so sánh khóa được thực hiện) trên cấu trúc BST tìm được
Sample
Input (OPTBST.inp)
6
4 9 5 1 3 2
Output (OPTBST.out)
48
Vòi tưới nước (Hải Phòng 2026)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
stdin - Tệp ra:
stdout - Thời gian chạy:
1.0s - Bộ nhớ:
1025MB
Python Basic Contest #01 - Đếm số nguyên tố trên đoạn
Bạn được cho hai số nguyên dương (l, r). Bạn cần đếm số lượng số nguyên tố trong đoạn [l, r].
Input, Output và Subtask
Input (bàn phím)
- Một dòng duy nhất gồm hai số nguyên dương l, r (l, r \le 10^{12}, r - l \le 10^6).
Output (màn hình)
- Một dòng duy nhất gồm số lượng số nguyên tố trong đoạn [l, r].
Subtask
| Tỉ lệ điểm (%) | Giới hạn |
|---|---|
| 20 | l = 1, r \le 1000 |
| 20 | l = 1, r \le 4 \times 10^4 |
| 20 | l = 1 |
| 20 | r - l \le 2000 |
| 10 | r - l \le 10^5 |
| 10 | Không có giới hạn gì thêm |
Sample 1
Input (bàn phím)
8 20
Output (màn hình)
4
Notes
- Các số nguyên tố trong đoạn [8, 20] là 11, 13, 17, 19.
Sample 2
Input (bàn phím)
1 100
Output (màn hình)
25
Make It Divisible By 6
Cho một số N có tối đa 100 chữ số và không có chữ số 0 vô nghĩa nào ở đầu. Bạn được phép thực hiện thao tác sau:
- Chọn một vị trí trong số N dưới dạng xâu kí tự (biết xâu kí tự này được đánh số bắt đầu từ 1). Xóa số đó khỏi xâu và trả xâu mới đó về lại dạng số, tạo ra số N mới. Nếu như số N ban đầu chỉ có 1 chữ số, thao tác này sẽ tự động đưa giá trị biến N trở về 0.
Ví dụ: Nếu N = 69420, với một thao tác thì các số N mới có thể là 9420 (xóa chữ số đầu), 6420 (xóa chữ số thứ hai), 6920 (xóa chữ số thứ ba), 6940 (xóa chữ số thứ tư, và 6942 (xóa chữ số thứ năm).
Hãy cho biết cần tối thiểu bao nhiêu lần thực hiện thao tác để tạo ra được một số N mới lớn nhất có thể sao cho N chia hết cho 6, và không có bất kì chữ số 0 vô nghĩa nào.
Input [standard]
- Mỗi test bao gồm một số duy nhất là số N, có tối đa 100 chữ số (1≤N<10^{100}).
Output [standard]
- In ra số X lớn nhất thỏa
-
- X ≤ N;
-
- X chia hết cho 6;
-
- Số X có thể thu được bằng một chuỗi các thao tác trên lên số N
Scoring
- 100\% số test có giới hạn như đề đã cho.
Example Tests
Example Test #1
INPUT
2
OUTPUT
0
Explanation
Ở test ví dụ số 1, 0/6=0.
Example Test #2
INPUT
1358
OUTPUT
138
Explanation
Ở test ví dụ số 2, 138/6=23.
Example Test #3
INPUT
69420
OUTPUT
69420
Explanation
Ở test ví dụ số 3, 69420/6=11570.
Software (OLP 30/4 2023)
Tâm rất yêu thích lập trình tạo phần mềm. Vào dịp rảnh rỗi Tâm đã thiết kế một phần mềm đơn giản. Màn hình phần mềm gồm N địa điểm (đánh số từ 1 đến N), trong đó mỗi địa điểm có đặt một bóng đèn ở trạng thái sáng hoặc tắt. Có N-1 con đường một chiều nối trực tiếp giữa các cặp điểm. Mỗi lần Tâm chạm tay vào một địa điểm X_i bất kỳ trên màn hình thì sẽ có một robot xuất phát từ địa điểm X_i di chuyển theo các con đường một chiều, cuối cùng kết thúc ở địa điểm 1. Robot không thay đổi trạng thái đèn ở địa điểm X_i và địa điểm 1, các địa điểm còn lại robot đã đi qua thì đèn ở địa điểm đó sẽ thay đổi sang trạng thái ngược lại (sáng thành tắt, tắt thành sáng)
Yêu cầu: Hãy cho biết khi Tâm thực hiện K lần chạm tay (mỗi lần chạm tay vào một địa điểm) thì sau đó sẽ có bao nhiêu địa điểm có đèn sáng. Biết rằng robot xuất phát từ địa điểm bất kỳ luôn có thể di chuyển theo các con đường một chiều đến địa điểm 1
Input, Output và Subtasks
Input: (SOFTWARE.inp)
- Dòng đầu tiên gồm 2 số nguyên dương N và K lần lượt là số địa điểm, số lần chạm tay (1\le N,K\le 10^5)
- Dòng thứ hai gồm N số nguyên cho biết trạng thái đèn ở N địa điểm, lần lượt theo thứ tự từ địa điểm 1 đến N. Trạng thái đèn tắt là 0, sáng là 1
- Dòng thứ i trong N-1 dòng tiếp theo gồm 2 số nguyên dương A_i và B_i (1\le A_i,B_i\le N) cho biết có con đường một chiều nối trực tiếp từ địa điểm A_i đến B_i
- Dòng cuối cùng gồm K số nguyên dương, trong đó số nguyên thứ i là X_i (1\le X_i\le N) cho biết địa điểm thứ i mà Tâm thực hiện chạm tay
Output: (SOFTWARE.out)
- Số nguyên duy nhất là kết quả cần tìm
Subtasks
- Subtask 1 (50\%): 1\le N,K\le 5000
- Subtask 2 (50\%): Không có ràng buộc gì thêm
Sample 1
Input (SOFTWARE.inp)
5 3
1 0 0 0 0
2 1
4 2
3 2
5 4
4 5 4
Output (SOFTWARE.out)
3
Note
Tâm chạm tay 3 lần:
- Lần 1 ở địa điểm 4: robot đi qua các địa điểm 4,2,1 và thay đổi trạng thái đèn ở địa điểm 2
Kết quả trạng thái 5 đèn theo thứ tự lần lượt là:1 1 0 0 0 - Lần 2 ở địa điểm 5: robot đi qua các địa điểm 5,4,2,1 và thay đổi trạng thái đèn ở địa điểm 4,2
Kết quả trạng thái 5 đèn theo thứ tự lần lượt là:1 0 0 1 0 - Lần 3 ở địa điểm 4: robot đi qua các địa điểm 4,2,1 và thay đổi trạng thái đèn ở địa điểm 2
Kết quả trạng thái 5 đèn theo thứ tự lần lượt là:1 1 0 1 0
Sau 3 lần chạm tay, có 3 địa điểm có đèn sáng là địa điểm 1, 2 và 4
Sample 2
Input (SOFTWARE.inp)
4 1
0 0 0 0
3 1
2 3
4 2
4
Output (SOFTWARE.out)
2