Đường đi trên cây
Cho n đỉnh và các thao tác nối các đỉnh lại với nhau bằng n - 1 cạnh có trọng số, sao cho sau khi nối tất cả các cạnh sẽ tạo được một đồ thị liên thông. Trong khi các thao tác nối đỉnh được thực hiện, người ta muốn biết xem liệu có tồn tại đường đi giữa hai đỉnh của đồ thị hay không, và trọng số của đường đi (nếu có) là bao nhiêu. Trọng số của một đường đi giữa hai đỉnh trên cây được định nghĩa là tổng XOR của trọng số của tất cả các cạnh trên đường đi giữa hai đỉnh đó.
Input, Output và Subtasks:
Input:
- Dòng đầu tiên gồm hai số nguyên dương n,q lần lượt là số đỉnh và số truy vấn.
- q dòng tiếp theo, mỗi dòng có một trong hai định dạng sau:
+ u v w: tạo một đường đi nối hai đỉnh u và v có trọng số w. Dữ liệu đầu vào đảm có có chính xác n-1 truy vấn cho loại này.? u v: tính trọng số của đường đi giữa hai đỉnh u và v, nếu không có thì in ra -1.
Output:
- Gồm nhiều dòng, mỗi dòng là kết quả của một truy vấn loại 2.
Subtasks:
- n,q\leq 10^6 với mọi testcase.
Sample:
Input:
5 11
? 1 5
+ 1 5 3
+ 5 3 1
? 1 3
+ 5 2 6
? 2 1
? 2 3
? 2 4
+ 1 4 7
? 2 4
? 3 4
Output:
-1
2
5
7
-1
2
5
Notes:
- Truy vấn đầu tiên (hình 1): các đỉnh chưa được nối với nhau nên kết quả là -1.
- Truy vấn thứ hai (hình 2): tồn tại đường đi 1 \rightarrow 5 \rightarrow 3 có trọng số là 2.
- Truy vấn thứ ba (hình 3): tồn tại đường đi 2\rightarrow 5\rightarrow 1 có trọng số là 5.
- Truy vấn thứ tư (hình 3): tồn tại đường đi 2\rightarrow 5\rightarrow 3 có trọng số là 7.
- Truy vấn thứ năm (hình 3): không tồn tại đường đi đến đỉnh 4.
- Truy vấn thứ sáu (hình 4): tồn tại đường đi 2\rightarrow 5\rightarrow 1\rightarrow 4 có trọng số là 2.
- Truy vấn thứ bảy (hình 4): tồn tại đường đi 3\rightarrow 5\rightarrow 1\rightarrow 4 có trọng số là 5.
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 :(
GIẢI PHƯƠNG TRÌNH (Hải Dương 2024)
Đề 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ớ:
1024MB
Bình chọn (Tuyên Quang 2026)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
BAI3.INP - Tệp ra:
BAI3.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
DÃY ĐẶC TRƯNG (Hà Tĩnh 2024)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
SPEC.INP - Tệp ra:
SPEC.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Giai thừa kép (HSG9 BR 2024)
Biết n!! được quy ước như sau:
- n!! = 1 nếu n = 0
- n!! = 1 \times 3 \times 5 \times ... n nếu n lẻ.
- n!! = 2 \times 4 \times 6 \times ... n nếu n chẵn.
Yêu cầu: Tính 1!! - 2!! + 3!! - ... + (-1)^{n + 1}n!!.
Input, Output and Scoring
Input (FADOUBLE.inp)
- Một số nguyên dương n duy nhất (1 \le n \le 30).
Output (FADOUBLE.out)
- Kết quả tìm được.
Example
Input (FADOUBLE.inp)
5
Output (FADOUBLE.out)
9
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.
Ước chung (HSG9 HN 2024)
Cho trước hai số nguyên dương A và B.
Yêu cầu: Hãy lập trình đưa ra k là ước chung lớn thứ hai của A và B. Nếu k không tồn tại thì in ra -1.
Input, Output and Scoring
Input (UOCCHUNG.INP)
- Một dòng duy nhất chứa hai số tự nhiên A, B (A, B \le 10^{12}).
Output (UOCCHUNG.OUT)
- Một số tự nhiên duy nhất là kết quả của bài toán.
Scoring
- Subtask 1 (80\%): A, B \le 10^3.
- Subtask 2 (20\%): Không có ràng buộc gì thêm.
Test
Input (UOCCHUNG.INP)
30 40
Output (UOCCHUNG.OUT)
5
Dãy dài nhất (PTNK 2024)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
MARBLE.INP - Tệp ra:
MARBLE.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Đếm bộ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:
BAI1.INP - Tệp ra:
BAI1.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Lợi nhuận khách hàng (Bình Dương 2023)
Đề 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
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
Gà và chó (Thanh Hóa 2024)
Đề 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
Tổng bảng số (HSG9 QT 2023)
An thích học về bảng số. Bạn ấy tạo ra bảng số A có kích thước M\cdot N theo quy luật như sau:
- Bảng có M dòng đánh số từ 1 đến M
- Bảng có N cột đánh số từ 1 đến N
- Tại vị trí dòng i và cột j trên bảng sẽ được ghi số (i-1)\cdot N+j nếu i+j là số chẵn, và ghi số 0 nếu i+j là số lẻ (1\le i\le M, 1\le j\le N)
Yêu cầu: Cho 2 số nguyên dương M, N. Hãy tính tổng tất cả các số được ghi trên bảng
Input, Output và Subtasks
Input: (TONGBANG.inp)
- Ghi 2 số nguyên dương M, N (1\le M,N\le 10^9). Các số cách nhau bởi dấu cách
Output: (TONGBANG.out)
- Một số nguyên duy nhất là tổng các số được ghi trên bảng số. Vì kết quả có thể rất lớn nên chỉ in ra đáp án sau khi chia lấy dư cho 1532023
Subtasks
- Subtask 1 (60\%): 1\le M,N\le 500
- Subtask 2 (20\%): 1\le M,N\le 10^5
- Subtask 3 (20\%): Không có ràng buộc gì thêm
Sample 1
Input (TONGBANG.inp)
3 4
Output (TONGBANG.out)
38
Note
Bảng sẽ được tạo ra như sau:
1 0 3 0
0 6 0 8
9 0 11 0
Tổng: 1+3+6+8+9+11=38
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