Tính tổng (Bình Phước 2023)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
tinhtong.inp - Tệp ra:
tinhtong.out - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
TLEoj Contest #02 - Nhảy về không (bản khó)
Bạn được cho một số nguyên dương n. Với mỗi thao tác, bạn trừ n cho tổng các chữ số của nó. Đếm số thao tác cần thiết để có n = 0.
Bạn phải trả lời q truy vấn như vậy.
P/s: Bài này có giới hạn bộ nhớ là 600000KB (600 nghìn kilobytes).
Input, Output và Subtasks
Input: (bàn phím)
- Dòng đầu tiên là số nguyên dương q \le 10^5.
- q dòng tiếp theo, mỗi dòng là một số nguyên dương n \le 10^{18}.
Output: (màn hình)
- Gồm q dòng, dòng thứ i là kết quả truy vấn thứ i.
Subtasks
- Subtask 1 (12\%): q = 1,n\le 10^9.
- Subtask 2 (12\%): n \le 10^5.
- Subtask 3 (16\%): n \le 10^6.
- Subtask 4 (16\%): n \le 10^8.
- Subtask 5 (24\%): n \le 10^9.
- Subtask 6 (20\%): Không có giới hạn gì thêm.
Sample
Input (bàn phím)
3
18
19
20
Output (màn hình)
2
2
3
Notes
- Ở testcase đầu tiên, 18 - 9 = 9 và 9 - 9 = 0.
- Ở testcase thứ hai, 19 - 10 = 9 và 9 - 9 = 0.
- Ở testcase thứ ba, 20 - 2 = 18, 18 - 9 = 9 và 9 - 9 = 0.
Phần thưởng (Tiền Giang 2024)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
GIFT.INP - Tệp ra:
GIFT.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
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.
Xếp thùng sơn (TS10 QT 2023)
Cho n thùng sơn màu đỏ và m thùng sơn màu xanh xếp thành một hàng ngang. Các thùng sơn cùng màu được xếp liền nhau từ trái sang phải, hết màu này tiếp đến màu kia.
Yêu cầu: Nếu cần xếp k thùng sơn lên xe, bắt đầu từ bên trái hàng sơn, hỏi có bao nhiêu thùng sơn màu đỏ được xếp
Input, Output và Subtasks
Input: (CAU1.INP)
- Dòng đầu tiên ghi số nguyên dương n (1\le n\le 100) và 1 chữ cái c_1, ghi cách nhau bởi một dấu cách, là số thùng sơn và màu sơn của các thùng sơn được xếp phía bên trái hàng sơn. Nếu chữ cái c_1 là
Rcó nghĩa các thùng sơn màu đỏ,Blà các thùng sơn màu xanh - Dòng thứ hai ghi số nguyên dương m (1\le m\le 100) và 1 chữ cái c_2, ghi cách nhau bởi một dấu cách, là số thùng sơn và màu sơn của các thùng sơn được xếp phía bên phải hàng sơn. Nếu chữ cái c_2 (c_2\ne c_1) là
Rcó nghĩa các thùng sơn màu đỏ,Blà các thùng sơn màu xanh - Dòng cuối cùng ghi số nguyên dương k (1\le k\le n+m) là số thùng sơn được xếp lên xe
Output: (CAU1.OUT)
- Duy nhất một số là số thùng sơn màu đỏ được xếp lên xe
Sample
Input (CAU1.INP)
5 R
6 B
7
Output (CAU1.OUT)
5
Note
Có thể xem hàng sơn RRRRRBBBBBB thì số thùng sơn được xếp lên xe tương ứng là RRRRRBB. Có 5 thùng sơn màu đỏ được xếp lên xe
Sample
Input (CAU1.INP)
5 B
6 R
7
Output (CAU1.OUT)
2
Note
Có thể xem hàng sơn BBBBBRRRRRR thì số thùng sơn được xếp lên xe tương ứng là BBBBBRR. Có 2 thùng sơn màu đỏ được xếp lên xe
Sample
Input (CAU1.INP)
5 R
6 B
3
Output (CAU1.OUT)
3
Sample
Input (CAU1.INP)
5 B
6 R
3
Output (CAU1.OUT)
0
TLEoj Contest #05 - Đếm cây
Cho cây không trọng số N đỉnh. Gọi dist(u,v) là độ dài của đường đi đơn từ u đến v trên cây. Đếm số cách chọn một tập S = \{u_1,u_2,...,u_K\} thoả mãn:
- 1 \leq u_1<u_2<...<u_K \leq N
- Với mọi bộ chỉ số (i,j,k) (1 \leq i,j,k \leq K; i \neq j \neq k): dist(u_i,u_j)+dist(u_j,u_k)>dist(u_i,u_k).
Input, Output và Subtasks
Input
- Dòng đầu chứa hai số nguyên N và K (3 \leq K \leq N \leq 5000).
- N-1 dòng sau, mỗi dòng chứa 2 số nguyên dương u, v (1 \leq u,v \leq N, u \neq v) thể hiện một cạnh của cây.
Các số trên cùng một dòng cách nhau bởi một dấu cách.
Output
Ghi một số nguyên duy nhất là số cách chọn thoả mãn. Vì kết quả có thể rất lớn, hãy in ra kết quả chia lấy dư cho 998244353.
Subtasks
- Subtask 1 (10\%): N\le 20
- Subtask 2 (20\%): N\le 200
- Subtask 3 (30\%): K=3
- Subtask 4 (40\%): Không có ràng buộc gì thêm
Sample 1
Input
7 4
3 2
3 7
7 1
3 6
3 4
7 5
Output
6
Note
Các tập thỏa mãn: (1,2,4,5);(1,2,4,6);(1,2,5,6);(1,4,5,6);(2,4,5,6);(2,4,6,7)
Sample 2
Input
5 3
3 2
2 1
1 5
2 4
Output
2
Note
Các tập thỏa mãn: (1,3,4);(3,4,5)
Độ giống nhau (Quảng Trị 2025)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
CAU4.INP - Tệp ra:
CAU4.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Từ vựng (Tiền Giang 2025)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
WORD.INP - Tệp ra:
WORD.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Đếm ước (Phú Thọ 2023)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
CAU2.INP - Tệp ra:
CAU2.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
TLEOJ Contest #14 - Simulations
Một chiến dịch lớn giữa các sinh viên ưu tú nhất khoa Công nghệ thông tin của một trường nào đó đã được khởi động, với mục tiêu là dựng lên một chương trình giả tưởng, biểu diễn một lượng rất lớn các biến cố có thể xảy ra từ các dữ kiện ban đầu, nhờ vào công nghệ \text{AI}. Tuy nhiên, việc dựng mô hình này sẽ rất, rất, rất, rất bất tiện. Thế nên, các bạn trẻ của chúng ta đã dựng nên một mô hình để mô phỏng lại quá trình dựng nên cây sự kiện.
Ban đầu, khi bắt đầu thiết lập, cây giả tưởng này chỉ có một nút duy nhất và một hàng nút duy nhất. Nút duy nhất đó được đánh số là nút 1, ở hàng duy nhất được đánh số là 1.
Có một thao tác dựng cây có thể được sử dụng. Thao tác này yêu cầu hai số nguyên không âm a, b cho trước. Hai số này đảm bảo a + b > 1. Thao tác dựng cây như sau:
- Giả sử cây có tổng cộng r hàng nút trước khi gọi thao tác này. Gọi L=[L_1; L_2; L_3; ...; L_k] là số chỉ của các đỉnh ở hàng r. Hai số a và b này sẽ dựng các nút mới như sau:
- Với nút L_i (1 \le i \le k), sinh ra tổng cộng a + b nút mới làm con của nó. Giả sử cây hiện tại, lúc xét nút L_i và trước khi thêm đỉnh, có tổng cộng N nút. Các nút này sẽ lần lượt được đánh số từ N + 1 đến N + (a + b).
- Cũng tại bước sinh nút mới tại nút L_i đang xét, các nút đã được đánh số N + x, với 1 \le x \le a, cạnh nối giữa nút L_i và nút N + x được đánh dấu là cạnh \text{"A"} + \text{str}(x) của nút L_i. Tiếp theo, các nút đã được đánh số N + a + y, với 1 \le y \le b, có cạnh nối giữa nút L_i và nút N + y được đánh dấu là cạnh \text{"B"} + \text{str}(y) của nút L_i.
Ví dụ, nếu gọi hai bước sinh nút mới lần lượt với hai bộ số (a; b) là (3; 2) và (1; 1), ta có được cây sau:

Đôi khi, máy tính có thể gặp trục trắc, nên đôi khi thay vì sinh nút mới, máy tính sẽ kiểm tra bằng cách kiểm tra lại nút có chỉ số là X, bằng cách sử dụng các cạnh nào, để đi từ đỉnh của cây – nút 1 – đến với nút có chỉ số là X, để đảm bảo rằng tiến trình sinh cây được chính xác. Cụ thể, để đi tới nút số 10, trong ví dụ bên trên, ta sẽ từ nút 1, sử dụng cạnh \text{"A2"} của nút 1 để đi xuống nút 3; và từ nút 3, ta sẽ sử dụng cạnh \text{"B1"} của nút 3 để đi xuống nút 10. Chúng ta cần cho máy biết, các cạnh được sử dụng lần lượt là cạnh \text{"A2"} và cạnh \text{"B1"} (máy tính sẽ tự động biết cần dụng cạnh \text{"Ax"} , hoặc cạnh \text{"By"} của nút nào, nên việc thêm vào sử dụng cạnh đó của nút nào, trong trường hợp này, là không cần thiết).
Công trình được thiết lập cho một mục tiêu lớn hơn, nhưng trước hết thì đây là phiên bản thử nghiệm của công trình “Vẽ cây mô phỏng” lớn nhất từng được thực hiện. Hãy cùng thực hiện công tác thử nghiệm mô hình này nào.
Vì là mô hình thử nghiệm, nên trong suốt quá trình xử lí, tổng số nút mà máy tính cần phải xử lí sẽ không vượt quá 10^{18} nút.
\text{Input} SIMULS.inp
- Dòng một gồm một số q, thể hiện số lượng truy vấn (2 \le q \le 10^5);
- q dòng sau, mỗi dòng thể hiện một trong hai loại sau:
- 1 a b: Thể hiện truy vấn thêm nút trên cây. Đọc lại đề để biết thêm chi tiết (nếu bạn cố tình đọc lướt đến phần \text{Input} này để full nhanh đề).
- 2 X: Thể hiện truy vấn kiểm tra của máy tính. Nếu không biết, hãy đọc lại đề để biết thêm chi tiết (nếu bạn cố tình đọc lướt đến phần \text{Input} này để full nhanh đề). Biết rằng nếu gọi N là tổng số nút trên cây đã được sinh trước truy vấn này, \text{Input} được đảm bảo rằng X ≤ N.
- \text{Input} được đảm bảo rằng trong suốt quá trình xử lí, tổng số nút trên cây sẽ không vượt quá 10^{18} nút.
\text{Output} SIMULS.out
- Với truy vấn loại 2 X, in ra đáp án theo yêu cầu của đề theo dạng như sau:
- Ở hàng đầu tiên, in ra một giá trị p, thể hiện số cạnh cần sử dụng để đi từ nút 1 đến nút X.
- Ở hàng thứ hai, in ra p giá trị, thể hiện các cạnh cần sử dụng theo thứ tự để đi từ nút 1 đến nút X. Đọc lại đề nếu bạn vẫn ko biết cần in cái gì (còn in kiểu gì hãy đọc \text{Example Tests}). Nếu p = 0, không in ra gì cả.
\text{Scoring}
- Subtask \text{#}1 (20\% số điểm): Có đúng một truy vấn cập nhật cây, có \text{min}(a, b) = 0.
- Subtask \text{#}2 (20\% số điểm): N \le 2 * 10^5.
- Subtask \text{#}3 (20\% số điểm): q \le 2 * 10^4, trong đó các truy vấn cập nhật cây có a + b = 2.
- Subtask \text{#}4 (15\% số điểm): q \le 2 * 10^4.
- Subtask \text{#}5 (15\% số điểm): N \le 10^9.
- Subtask \text{#}6 (10\% số điểm): Không có giới hạn gì thêm.
\text{Examples}
\text{Test #}1
\text{Input}
4
1 1 1
1 1 1
2 2
2 3
\text{Output}
1
A1
1
B1
\text{Test #}2
\text{Input}
4
1 1 1
1 1 1
2 1
2 4
\text{Output}
0
2
A1 A1
\text{Test #}3
\text{Input}
9
1 1 1
1 1 1
2 1
2 2
2 3
2 4
2 5
2 6
2 7
\text{Output}
0
1
A1
1
B1
2
A1 A1
2
A1 B1
2
B1 A1
2
B1 B1
\text{Explanations}

Đây là cây của chúng ta sau khi sử dụng hai lệnh sinh nút 1 1 1 (với a = b = 1)
- Đối với nút 1, ta không cần di chuyển vì ta đã ở sẵn ở nút 1 ngay từ đầu truy vấn kiểm tra.
- Đối với nút 2, ta cần di chuyển trên cạnh \text{"A1"} của nút 1 để đến với nút 2.
- Đối với nút 3, ta cần di chuyển trên cạnh \text{"B1"} của nút 1 để đến với nút 3.
- Đối với nút 4, từ nút 1 ta cần di chuyển qua cạnh \text{"A1"} của nút 1 để đến với nút 2, và di chuyển qua cạnh \text{"A1"} của nút 2 để đến với nút 4.
- Đối với nút 5, từ nút 1 ta cần di chuyển qua cạnh \text{"A1"} của nút 1 để đến với nút 2, và di chuyển qua cạnh \text{"B1"} của nút 2 để đến với nút 5.
- Đối với nút 6, từ nút 1 ta cần di chuyển qua cạnh \text{"B1"} của nút 1 để đến với nút 3, và di chuyển qua cạnh \text{"A1"} của nút 3 để đến với nút 6.
- Đối với nút 7, từ nút 1 ta cần di chuyển qua cạnh \text{"B1"} của nút 1 để đến với nút 3, và di chuyển qua cạnh \text{"B1"} của nút 3 để đến với nút 7.
TLE-oj Cup Round 9 - Tổng chữ số
Cho số nguyên dương n. Tính tổng các chữ số của các số từ 1 đến n.
Input, Output và Subtasks
Input: (SUMDIGIT.inp)
- Một dòng duy nhất gồm số nguyên dương n.
Output: (SUMDIGIT.out)
- In ra kết quả bài toán.
Subtasks
- Subtask 1 (50\%): n \le 10^{7}.
- Subtask 2 (20\%): n \le 10^{8}.
- Subtask 3 (30\%): n \le 10^{16}.
Sample
Input (SUMDIGIT.inp)
9
Output (SUMDIGIT.out)
45
Note
1 + 2 + 3 + ... + 9 = 45..
TLEOJ Contest #10 - Nước Cam
Sau khi đá bóng, chinhoangmanutd đã rất khát nước. Sau đó anh ấy đi đến quầy nước cam với t đồng trong người.
Tại quầy bán nước cam, có 2 loại chai:
- Chai nhựa với mức giá là x
- Chai thủy tinh với mức giá là y
- Vì chai thủy tinh có thể tái chế được nên là có thể bán lại cho quán với mức giá là z
Nhiệm vụ của bạn là tính số chai lớn nhất mà chinhoangmanutd có thể mua với t đồng trên. Và bạn sẽ phải xử lí q trường hợp như vậy.
Input, Output và Subtask
Input
- Dòng đầu tiên số nguyên dương q (1\le q\le10^5)
- Gồm q dòng có các số nguyên t,x,y,z (1\le t,x,z,y\le 10^9;z<y)
Output
- Xuất ra q dòng, mỗi dòng gồm duy nhất 1 số là số chai lớn nhất mua được.
Subtask
- Subtask 1 (20\% số điểm): q\le 100;1\le t,x,y,z\le 1000.
- Subtask 2 (30\% số điểm): q\le 1000;1\le t,x,y,z\le 10^6.
- Subtask 3 (50\% số điểm): Không có giới hạn gì thêm
Example
Test 1
Input
1
30 6 10 8
Output
12
Biến đổi xâu (Nam Định 2025)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
BIENDOI.INP - Tệp ra:
BIENDOI.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
TLEoj Contest #03 - Olimpit Tam quốc
Từ xa xưa, ba nước: TLE, VNOI, CF vẫn luôn phân vân và muốn biết xem nước nào là nước mạnh nhất về thể thao. Vì thế cả 3 nước đã quyết định tạo ra một thế vận hội “Olimpit Tam quốc” nhằm tìm ra xem nước nào là nước mạnh nhất. Cho đến ngày hôm nay, thế vận hội đã diễn ra được t năm. Trong mỗi năm, các sự kiện sẽ được biểu diễn bởi một xâu s chỉ gồm 3 ký tự là T,V,C. Trong đó, mỗi ký tự T tương ứng với việc nước TLE được thêm 1 điểm, V tương ứng với VNOI và C tương ứng với CF. Đến cuối năm, nước nào được nhiều điểm nhất sẽ là nước vô địch năm đó (nếu có nhiều nước cùng nhiều điểm nhất thì ưu tiên theo thứ tự TLE > VNOI > CF)
Qua t năm, ba nước muốn thống kê lại số lần vô địch của mỗi nước. Với trách nghiệm là 1 sứ giả, nhiệm vụ của bạn là đếm số lần vô địch của mỗi nước sau t năm.
Input, Output và Subtasks
Input
- Dòng thứ nhất gồm 1 số nguyên dương t là số năm (1\le t\le 10^3)
- T dòng tiếp theo, dòng thứ i gồm 1 chuỗi s có các chữ cái
T,V,Cbiểu thị các sự kiện trong năm thứ i (1\le |s|\le 10^3, trong đó |s| là độ dài của chuỗi s)
Output
- Xuất ra 3 số trên 1 dòng cho biết số lần vô địch của các nước. Trong đó số thứ nhất là tương ứng với nước TLE, số thứ hai tương ứng với VNOI và số thứ ba tương ứng với CF
Sample
Input
3
TCTVVCTTTVCT
TTVVCC
TCVCVCV
Output
2 1 0
Note
- Năm đầu tiên, quốc gia TLE giành được 6 điểm, quốc gia VNOI giành được 3 điểm và quốc gia CF cũng giành được 3 điểm. Quốc gia TLE vô địch lần đầu tiên.
- Năm thứ hai, mỗi quốc gia đạt được 2 điểm, nhưng theo luật ưu tiên, quốc gia TLE vô địch.
- Năm thứ ba, quốc gia TLE giành được 1 điểm, quốc gia VNOI giành được 3 điểm và quốc gia CF cũng giành được 3 điểm. Nhưng theo luật ưu tiên, quốc gia VNOI vô địch
- Sau 3 năm, quốc gia TLE vô địch 2 lần, quốc gia VNOI vô địch 1 lần và CF không vô địch lần nào :(