TLEoj Cup Final Day 1 - Bảng trắng đen
Bạn được cho hai dãy số nguyên a_1, a_2, ..., a_n và b_1, b_2, ..., b_m. Bạn cần tạo ra một bảng n \times m gồm các ô màu đen hoặc màu trắng, sao cho hàng thứ i có đúng a_i ô đen, và cột thứ i có đúng b_i ô đen.
Input, Output và Subtask
Input (WBB.inp)
- Dòng đầu tiên gồm một số nguyên dương t là số trường hợp cần giải quyết (t \le 10).
- t nhóm dòng tiếp theo, mỗi nhóm gồm ba dòng với format như sau:
- Dòng đầu tiên gồm hai số nguyên dương n, m (1 \le n, m \le 1000).
- Dòng thứ hai gồm n số nguyên a_1, a_2, ..., a_n (a_i \le m).
- Dòng thứ ba gồm m số nguyên b_1, b_2, ..., b_m (b_i \le n).
- Dữ liệu đầu vào đảm bảo a_1 + a_2 + ... + a_n = b_1 + b_2 + ... + b_m.
Output (WBB.out)
- In ra kết quả của các trường hợp cần giải quyết. Nếu không tồn tại kết quả in ra -1, ngược lại in ra kết quả gồm n dòng, mỗi dòng gồm m ký tự 0 hoặc 1, Ô ở hàng i cột j là ô đen khi và chỉ khi ký tự thứ j ở hàng i là số 1.
- Nếu có nhiều kết quả đúng, bạn có thể in ra kết quả bất kỳ.
Subtask
- 20\% số điểm có m, n \le 4.
- 20\% số điểm khác có m \le 2.
- 20\% số điểm khác có a_i \le 1.
- 20\% số điểm khác có a_i \le 2.
- 20\% số điểm khác không có giới hạn gì thêm.
Sample 1
Input (WBB.inp)
2
4 5
1 3 1 3
1 2 2 1 2
2 3
2 0
2 0 0
Output (WBB.out)
00001
01011
00100
11100
-1
TLEoj Cup Final Day 1 - Truy vấn dãy tăng
Bạn được cho một dãy a có n phần tử và bạn phải thực hiện hai loại truy vấn:
- Loại 1:
! u v: Thay đổi giá trị của a_u thành v. - Loại 2:
? l r: Giả sử mỗi thao tác bạn có thể chọn một phần tử bất kỳ và tăng nó lên 1 đơn vị, tính số thao tác ít nhất để dãy con từ l đến r trở thành dãy không giảm (lưu ý: đây chỉ là thao tác tính toán thuần túy, không ảnh hưởng đến dãy a).
Bạn còn được cho một số t, biểu thị độ phụ thuộc của các truy vấn loại 1. Nếu t = 0 thì các truy vấn loại 1 sẽ độc lập với nhau, hay nói cách khác, truy vấn loại 1 thứ i - 1 sẽ hết hiệu lực ngay trước khi thực hiện truy vấn loại 1 thứ i. Nếu t = 1, các truy vấn loại 1 sẽ cớ tác dụng vĩnh viễn.
Input, Output và Subtask
Input (IAQ.inp)
- Dòng đầu tiên gồm ba số nguyên dương n, t, q, miêu tả số phần tử của dãy a, độ phụ thuộc giữa các truy vấn với nhau, và số lượng truy vấn. (n, q \le 10^5)
- Dòng thứ hai gồm n số nguyên mô tả dãy a ban đầu (a_i \le 10^9).
- q dòng tiếp theo, mỗi dòng là một truy vấn có dạng như trên.
Output (IAQ.out)
- Với mỗi truy ván loại 2, in ra kết quả cần tìm.
Subtask
- 20\% số điểm có n, q \le 2000.
- 20\% số điểm khác không có truy vấn loại 1.
- 20\% số điểm khác có t = 0 và l = 1, r = n với mọi truy vấn loại 2.
- 20\% số điểm khác có t = 1 và l = 1, r = n với mọi truy vấn loại 2.
- 20\% số điểm còn lại không có giới hạn gì thêm.
Sample 1
Input (IAQ.inp)
4 0 6
2 4 1 4
! 2 4
? 1 4
! 3 3
? 1 4
! 2 1
? 1 4
Output (IAQ.out)
3
1
2
Notes
Input (IAQ.inp) |
Output (IAQ.out) |
Note |
|---|---|---|
4 0 6 |
n = 4, q = 6 và các truy vấn là độc lập | |
2 4 1 4 |
a = (2, 4, 1, 4) | |
! 2 4 |
a = (2, 4, 1, 4) | |
? 1 4 |
3 |
Cần 3 thao tác để biến dãy a thành (2, 4, 4, 4) |
! 3 3 |
a = (2, 4, 3, 4) | |
? 1 4 |
1 |
Cần 1 thao tác để biến dãy a thành (2, 4, 4, 4) |
! 2 1 |
a = (2, 1, 1, 4) | |
? 1 4 |
2 |
Cần 2 thao tác để biến dãy a thành (2, 2, 2, 4) |
Sample 2
Input (IAQ.inp)
5 1 6
2 10 4 2 5
? 3 5
! 3 3
? 3 5
! 2 4
! 4 6
? 1 5
Output (IAQ.out)
2
1
2
Notes
Input (IAQ.inp) |
Output (IAQ.out) |
Note |
|---|---|---|
5 1 6 |
n = 5, q = 6 và các truy vấn phụ thuộc vào nhau | |
2 10 4 2 5 |
a = (2, 10, 4, 2, 5) | |
? 3 5 |
2 |
Cần 2 thao tác để biến dãy (a_3, a_4, a_5) thành (4, 4, 5) |
! 3 3 |
a = (2, 10, 3, 2, 5) | |
? 3 5 |
1 |
Cần 1 thao tác để biến dãy (a_3, a_4, a_5) thành (3, 3, 5) |
! 2 4 |
a = (2, 4, 3, 2, 5) | |
! 4 6 |
a = (2, 4, 3, 6, 5) | |
? 1 5 |
2 |
Cần 2 thao tác để biến dãy a thành (2, 4, 4, 6, 6) |
Dữ liệu (DHBB 2023)
Dữ liệu tài chính của một công ty trong n ngày được biểu diễn bằng một dãy số t_1,t_2,\dots,t_n, trong đó t_i\ (1\le i\le n) là lượng tiền thu về của ngày thứ i. Lãnh đạo công ty thường xuyên yêu cầu thống kê số liệu về tổng tiền lớn nhất thu được của hai ngày liên tiếp trong các ngày từ ngày L đến ngày R\ (L<R), nghĩa là cần tìm giá trị lớn nhất trong các giá trị (t_i+t_{i+1}) với L\le i<R.
Một nhân viên đã truy cập trái phép dữ liệu của công ty và trước mỗi lần lãnh đạo công ty yêu cầu thống kê số liệu, nhân viên sẽ tìm cách đảo ngược một đoạn dữ liệu nào đó trong các ngày từ ngày L đến ngày R với mục đích khi thống kê dữ liệu trong đoạn từ ngày L đến ngày R thì giá trị trả về càng lớn càng tốt. Vi dụ, nếu đảo ngược đoạn từ ngày i đến ngày j\ (1\le L\le i\le j\le R\le n) trên dữ liệu ban đầu t_1,t_2,\dots,t_i,t_{i+1},\dots,t_j\dots,t_n thì dữ liệu thay đổi là t_1,t_2,\dots,t_j,t_{j-1},\dots,t_i\dots,t_n. Sau khi thống kê số liệu xong, người này sẽ lại thay đổi dữ liệu như ban đầu.
Yêu cầu: Cho biết dữ liệu ban đầu là t_1,t_2,\dots,t_n và q lần yêu cầu thống kê dữ liệu, hãy cho biết số liệu thống kê trả về khi bị can thiệp vào dữ liệu.
Input, Output và Subtasks
Input
Vào từ thiết bị vào chuẩn (bàn phím) có khuôn dạng:
- Dòng đầu chứa hai số nguyên dương n,q;
- Dòng thứ hai chứa n số nguyên không âm t_1,t_2,\dots,t_n\ (t_i\le 10^9);
- Dòng thứ k\ (1\le k\le q) trong q dòng sau, mỗi dòng chứa hai số nguyên mô tả yêu cầu thống kê dữ liệu L,R\ (1\le L\le R\le n).
Output
Ghi ra thiết bị ra chuẩn (màn hình) gồm q dòng, mỗi dòng chứa một số nguyên là giá trị mà lãnh đạo công ty nhận được khi yêu cầu thống kê dữ liệu tương ứng trong file dữ liệu vào.
Scoring
- Subtask 1 (50 điểm): n,q\le 50
- Subtask 2 (25 điểm): n,q\le 5000
- Subtask 3 (25 điểm): n,q\le 10^5
Sample
Input
5 2
5 2 3 1 3
1 5
4 5
Output
8
4
Note
Với yêu cầu thống kê thứ nhât, đảo ngược đoạn từ ngày 1 đến ngày 2 đề có dữ liệu mới: 2 5 3 1 3, kết quả thống kê được là 8.
Với yêu cầu thống kê thứ hai, đào ngược đoạn từ ngày 4 đến ngày 5 đề có dữ liệu mới 5 2 3 3 1, kết quả thống kê được là 4.
Bảng số (DHBB 2023)
Cho mảng A gồm m phần tử (các phần tử được đánh số từ 1 đến m) và mảng B gồm n phần tử (các phần tử được đánh số từ 1 đến n), mỗi phần tử của hai mảng chỉ nhận một trong ba giá trị -1,0,1. Tiến hành tạo bảng C kích thước m\times n, trong đó phần tử (i,j) nhận giá trị C[i][j]=A[i]\times B[j] với 1\le i\le m và 1\le j\le n.
Một bảng con vuông kích thước s của bảng C có phần tử trái trên là (x,y) và phần tử phải dưới là (x+s-1,y+s-1) với 1\le x\le m-s+1 và 1\le y\le n-s+1 được gọi là bảng con vuông “cân bằng” nếu:
- Các phần tử thuộc đường chéo chính đều nhận giá trị bằng 1. Cụ thể, các phần tử (x,y),(x+1,y+1),\dots,(x+s-1,y+s-1) có giá trị bằng 1.
- Tổng tất các các phần tử trong bảng con vuông bằng 0.
Yêu cầu: Cho hai mảng A và B, đếm số bảng con vuông “cân bằng” trong bảng C.
Input, Output và Subtasks
Input
Vào từ thiết bị vào chuẩn (bàn phím) có khuôn dạng:
- Dòng đầu chứa hai số nguyên dương m,n;
- Dòng thứ hai gồm m số mô tả mảng A;
- Dòng thứ ba gồm n số mô tả mảng B.
Output
Ghi ra thiết bị ra chuẩn (màn hình) một dòng chứa một số là số bảng con vuông “cân bằng” trong bảng C.
Scoring
- Subtask 1 (20 điểm): m,n\le 30
- Subtask 2 (30 điểm): m,n\le 300
- Subtask 3 (30 điểm): m,n\le 1000
- Subtask 4 (20 điểm): m\times n\le 5\times 10^6
Sample
Input
3 4
1 -1 1
1 0 -1 1
Output
1
Note

Chỉ có duy nhất 1 bảng con vuông “cân bằng” là bảng con kích thước 2 có phần tử trái trên là (2,3) (Hình vẽ)
Cứu hộ (DHBB 2023)
Vũ trụ Z có n hành tinh, các hành tỉnh được đánh số từ 1 đến n. Một hệ thống gồm m đường dịch chuyển, đường dịch chuyền thứ k\ (1\le k\le m) sẽ giúp di chuyền từ hành tỉnh i_k đến hành tinh j_k và mất chi phí là e(i_k,j_k). Một vụ nổ trong vũ trụ đã làm ảnh hưởng lớn đến tất cả các hành tinh, trừ hành tinh số 1. Hành tinh số 1 lên kế hoạch cứu hộ cho n-1 hành tinh còn lại.
Các nhà khoa học ở hành tinh số 1 đã tìm ra cách di chuyển giúp đội cứu hộ có thể di chuyển đến một hành tinh khác với chi phí nhỏ hơn. Cụ thể, với số nguyên không âm a mà các nhà khoa học thiết đặt, giả sử đội cứu hộ lần lượt di chuyển qua dãy gồm p hành tinh 1=x_1,x_2,\dots,x_p. Như vậy, đội cứu hộ sẽ phải sử dụng p-1 đường dịch chuyển, gọi s_1 là tổng chi phí của p-1 đường dịch chuyển, gọi r_1 là tổng chi phí của a đường dịch chuyền có chi phí lớn nhất trong p-1 đường dịch chuyển (nếu a>p-1 thì tính tổng chi phí của p-1 đường dịch chuyển), khi đó đội cứu hộ sẽ mất chi phí là s_1-r_1.
Về phía các hành tinh, các nhà khoa học cũng đã tính toán ra số nguyên không âm b dựa trên mức độ ảnh hưởng của vụ nồ để xác định được chi phí di chuyển của cư dân. Cụ thể, nếu cư dân hành tinh i phải di chuyển qua dãy gồm q hành tinh i=y_1,y_2,\dots,y_q, gọi s_2 là tổng chi phí của q-1 đường dịch chuyển, gọi r_2 là tổng chi phí của b đường dịch chuyển có chi phí nhỏ nhất trong q-1 đường dịch chuyển (nếu b>q-1 thì tính tổng chi phí của q-1 đường dịch chuyển), khi đó cư dân sẽ mất chi phí là s_2+r_2.
Chi phí để đội cứu hộ gặp được cư dân của hành tinh i là tổng chi phí di chuyền của đội cứu hộ cộng với tổng chi phí của cư dân hành tinh i di chuyển đề họ gặp được nhau.
Yêu cầu: Với mỗi hành tinh i\ (2\le i\le n), hãy tính chi phí nhỏ nhất để đội cứu hộ xuất phát từ hành tinh 1 có thể gặp cư dân của hành tỉnh i.
Input, Output và Subtasks
Input
Vào từ thiết bị vào chuẩn (bàn phím) có khuôn dạng:
- Dòng đầu chứa bốn số n,m,a,b;
- Dòng thứ k\ (1\le k\le m) trong m dòng tiếp theo chứa ba số nguyên dương i_k,j_k,e(i_k,j_k), trong đó 1\le i_k\ne j_k\le n và e(i_k,j_k)\le 10^9. Dữ liệu đảm bảo từ hành tinh i không có quá một đường dịch chuyển tới j và không tới chính nó.
Output
Ghi ra thiết bị ra chuẩn (màn hình) gồm một dòng chứa n-1, số thứ i số là chi phí nhỏ nhất để đội cứu hộ có thể gặp cư dân của hành tinh i+1, nếu đội cứu hộ không thể gặp được cư dân thì đưa ra số -1 tương ứng.
Scoring
- Subtask 1 (25 điểm): n\le 100,m\le 1000,a=b=0
- Subtask 2 (25 điểm): n\le 100,m\le 1000,a=b=1
- Subtask 3 (25 điểm): n\le 10^5,m\le 10^5,a=b=0
- Subtask 4 (25 điểm): n\le 10^5,m\le 10^5,0\le a,b\le 3
Sample
Input
4 4 1 1
1 2 1
2 3 2
3 4 3
4 2 1
Output
0 1 2
Note

Thay đổi dữ liệu (DHBB 2023)
Dữ liệu tài chính của một công ty trong n ngày được biểu diễn bằng một dãy số t_1,t_2,\dots,t_n, trong đó t_i\ (1\le i\le n) là dữ liệu cho ngày thứ i, nếu t_i\ge 0 tức là ngày i công ty thu về t_i đồng, ngược lại t_i<0 tức là ngày i công ty phải chi |t_i| đồng. Lãnh đạo công ty thường thống kê số liệu về tổng thu chi của một dãy ngày liên tiếp mà có biến động lớn nhất, mức đánh giá biến động từ ngày L đến ngày R được tính bằng |\sum_{i=L}^R t_i|.
Một nhân viên đã truy cập trái phép dữ liệu của công ty trước khi lãnh đạo công ty thống kê số liệu, nhân viên đã thay đổi số liệu của một dãy các ngày liên tiếp từ ngày u đến ngày v\ (1\le u\le v\le n) một lượng c, cụ thể với ngày i\ (u\le i\le v) giá trị t_i được thay đổi bằng t_i+c. Sau khi thống kê số liệu xong, nhân viên này sẽ lại thay đổi dữ liệu như ban đầu.
Yêu cầu: Cho biết dữ liệu ban đầu là t_1,t_2,\dots,t_n và q giả định thay đổi số liệu, với mỗi giả định hãy cho biết giá trị |\sum_{i=L}^R t_i| lớn nhất với 1\le L\le R\le n.
Input, Output và Subtasks
Input
Vào từ thiết bị vào chuẩn (bàn phím) có khuôn dạng:
- Dòng đầu chứa hai số nguyên dương n,q;
- Dòng thứ hai chứa n số nguyên t_1,t_2,\dots,t_n\ (|t_i|\le 10^9);
- Dòng thứ k\ (1\le k\le q) trong q dòng sau, mỗi dòng chứa ba số nguyên mô tả giả định thay đổi số liệu u,v,c\ (1\le u\le v\le n, |c|\le 10^9).
Output
Ghi ra thiết bị ra chuẩn (màn hình) gồm q dòng, mỗi dòng chứa một số nguyên là giá trị mà lãnh đạo công ty thống kê được tương ứng với giả định trong file dữ liệu vào.
Scoring
- Subtask 1 (15 điểm): n,q\le 20
- Subtask 2 (15 điểm): n,q\le 5000
- Subtask 3 (20 điểm): n,q\le 10^5 và cả q giả định có v-u\le 20
- Subtask 4 (30 điểm): n,q\le 10^5 và số cặp (u,v) khác nhau trong q giả định không quá 20 cặp
- Subtask 5 (20 điểm): n,q\le 10^5
Sample
Input
5 2
1 -1 2 1 1
2 2 -2
2 4 -2
Output
4
4
Note
Dữ liệu thay đổi theo giả định thứ nhất: 1\ -3\ 2\ 1\ 1, kết quả thống kê được là 4 (đoạn từ 3 đến 5)
Dữ liệu thay đổi theo giả định thứ hai: 1\ -3\ 0\ -1\ 1, kết quả thống kê được là 4 (đoạn từ 2 đến 4)
TLEoj Cup Final Day 1 - Đồ thị xor
Cho một đồ thị có 2^n đỉnh được đánh số từ 0 đến 2^n - 1 và một dãy số nguyên a_1, a_2, ..., a_m. Tồn tại cạnh nối giữa đỉnh i và j khi và chỉ khi i\ xor\ j = a_k với 1 \le k \le m. Cho q truy vấn, mỗi truy vấn gồm hai số nguyên u, v, nhiệm vụ của bạn là tìm độ dài đường đi ngắn nhất từ đỉnh u đến đỉnh v.
Input, Output và Subtask
Input (XORG.inp)
- Dòng đầu tiên gồm ba số nguyên dương n, m, q (n \le 60, m \le 20, q \le 10^6)
- Dòng thứ hai gồm m số nguyên dương a_1, a_2, ..., a_m.
- q dòng tiếp theo, mỗi dòng gồm hai số nguyên dương u, v,
Output (XORG.out)
- Gồm q dòng, dòng thứ i là kết quả của truy vấn thứ i. Nếu không tồn tại đường đi giữa hai đỉnh u, v, in ra -1.
Subtask
- 20\% số điểm có n \le 10.
- 20\% số điểm khác có n \le 20.
- 20\% số điểm khác có m = 1.
- 20\% số điểm khác có m = 2.
- 20\% số điểm còn lại không có giới hạn gì thêm.
Sample 1
Input (XORG.inp)
3 2 4
5 3
1 7
3 5
1 5
0 3
Output (XORG.out)
2
2
-1
1
Notes
Đồ thị sẽ có dạng như sau

Input (XORG.inp) |
Output (XORG.out) |
Note |
|---|---|---|
3 2 4 |
n = 3, m = 2, q = 4 | |
5 3 |
a = (5, 3) | |
1 7 |
2 |
Đường đi ngắn nhất là 1 \rightarrow 2 \rightarrow 7. |
3 5 |
2 |
Đường đi ngắn nhất là 3 \rightarrow 6 \rightarrow 5. |
1 5 |
-1 |
Không có đường đi từ 1 đến 5. |
0 3 |
1 |
Có đường đi trực tiếp từ 0 đến 3. |
TLEoj Cup Final Day 2 - Tráo bài
muốn tặng cho một món quà đặc biệt nhân ngày sinh nhật của bạn ấy, ngày 10 tháng 1 năm 2024. Vì không nghĩ ra được món quà nào đặc sắc nên chỉ đành tặng một chồng bài gồm n là bài được đánh số từ 1 đến n theo thứ tự từ trên xuống dưới. Vì món quà chưa đủ ấn tượng, quyết định mời giúp mình thực hiện một thử thách. sẽ thực hiện q lần tráo bài, mỗi lần cô sẽ rút c_i các lá bài có thứ tự từ l_i đến l_i + c_i - 1 từ trên xuống dưới và chèn chồng bài vào trên lá bài thứ k_i trong số các lá bài còn lại (nếu k_i = n - c_i + 1 thì chồng bài sẽ được chèn vào dưới những lá bài còn lại). muốn xác định t lá bài đầu tiên của chồng bài sau khi xáo.
Input, Output và Subtask
Input (SHUF.inp)
- Dòng đầu tiên gồm ba số nguyên dương n, t, q (n, q \le 10^5, t \le n).
- q dòng tiếp theo, dòng thứ i gồm ba số nguyên dương l_i, c_i, k_i (l_i + c_i - 1 \le n, k_i \le n - c_i + 1)
Output (SHUF.out)
- Một dòng gồm t số nguyên dương là số ghi trên t lá bài đầu tiên sau khi tráo.
Subtask
- Subtask 1 (30\%): n, q \le 5000.
- Subtask 2 (40\%): t \le \min(n, 50).
- Subtask 3 (30\%): Không có giới hạn gì thêm.
Sample 1
Input (SHUF.inp)
5 5 2
3 2 2
3 3 1
Output (SHUF.out)
4 2 5 1 3
Notes
(1, 2, 3, 4, 5) \rightarrow (1, 3, 4, 2, 5) \rightarrow (4, 2, 5, 1, 3)
TLEoj Cup Final Day 2 - Cầu thang
và đang đứng ở hai đầu của một cầu thang gồm m bậc, trong đó có n bậc bị hỏng. đang ở bậc thang thứ nhất và muốn leo lên bậc thang thứ m. Trong mỗi bước, có thể leo lên không quá k bậc (từ bậc i có thể leo đến các bậc không quá i + k). Bạn hãy giúp đếm số cách leo đến bậc thứ m nhé.
Input, Output và Subtask
Input (STAIR.inp)
- Dòng đầu tiên gồm ba số nguyên dương n, m, k (0 \le n \le 2000, \min(n, 1) \le m \le 10^{18}, 2 \le k \le 10)
- Dòng tiếp theo gồm n số nguyên dương phân biệt a_i (1 < a_i < m) là thứ tự các bậc thang bị hỏng.
Output (STAIR.out)
- In ra số cách có thể leo cầu thang, sau khi chia lấy dư cho 10^9 + 7.
Subtask
- 20\% số điểm có m \le 10^6.
- 20\% số điểm khác có n = 0 và k = 2.
- 20\% số điểm khác có n = 1 và k = 2.
- 20\% số điểm khác có n = 0.
- 20\% số điểm khác không có giới hạn gì thêm.
Sample 1
Input (STAIR.inp)
1 6 2
3
Output (STAIR.out)
2
Notes
Phúc có hai cách leo cầu thang, đó là 1 \rightarrow 2 \rightarrow 4 \rightarrow 6 hoặc 1 \rightarrow 2 \rightarrow 4 \rightarrow 5 \rightarrow 6.
TLEoj Cup Final Day 2 - Diện tích hình chữ nhật
có một mảnh giấy hình chữ nhật kích thước n \times m được chia thành các ô vuông đơn vị và muốn tính diện tích của tất cả các hình chữ nhật con (hình chữ nhật nằm gọn trong tờ giấy) có các cạnh song song với các cạnh của tờ giấy và bao trọn các ô vuông đơn vị. Thật không may, sau khi tính toán một vài phép tính cơ bản, nhận ra kết quả bài toán có thể rất lớn, nên muốn nhờ các bạn cùng tính để biết mình đúng hay sai. Các bạn hãy giúp nhé.
Input, Output và Subtask
Input (RECT.inp)
- Dòng đầu tiên gồm số nguyên dương q \le 100 là số trường hợp kiểm thử.
- q dòng tiếp theo, mỗi dòng gồm hai số nguyên dương m, n \le 10^9.
Output (RECT.out)
- Gồm q dòng, mỗi dòng gồm một số nguyên là tổng diện tích các hình chữ nhật con thỏa mãn đề bài sau khi chia lấy dư cho 10^9 + 7.
Subtask
- 20\% số điểm có n, m \le 10.
- 20\% số điểm khác có n, m \le 100.
- 20\% số điểm khác có n, m \le 1000.
- 20\% số điểm khác có n \le 1000.
- 20\% số điểm khác không có giới hạn gì thêm.
Sample 1
Input (RECT.inp)
2
2 3
5 8
Output (RECT.out)
40
4200
Notes
- Ở ví dụ thứ nhất, hình chữ nhật 2 \times 3 có các hình chữ nhật con với kích thước và số lượng như sau:
- 1 \times 1: 6 hình.
- 1 \times 2: 3 hình.
- 1 \times 3: 2 hình.
- 2 \times 1: 4 hình.
- 2 \times 2: 2 hình.
- 2 \times 3: 1 hình.
TLEoj Contest #03 - Mảng xor
Bạn được cho một dãy số a gồm n phần tử. Dãy số b được tạo bằng cách như sau:
- b_1=a_1\oplus a_2
- b_2=a_2\oplus a_3
- b_3=a_3\oplus a_4
- \dots
- b_{n-1}=a_{n-1}\oplus a_n
- b_n=a_n\oplus a_1
Trong đó, \oplus là thao tác bit XOR. Bạn có thể đọc tại đây
Bạn được cho dãy số b, nhiệm vụ của bạn là tìm một dãy số a thỏa mãn điều kiện sao cho thứ tự từ điển của dãy là nhỏ nhất.
Một dãy số a được coi là có thứ tự từ điển nhỏ hơn dãy số b khi tồn tại vị trí i mà:
- Với mọi vị trí j<i thì a_j=b_j
- a_i<b_i
Input, Output và Subtasks
Input
- Dòng thứ nhất gồm 1 số t là số testcase (1\le t\le 10^4)
- Sau đó là t block được định dạng như sau:
- Dòng đầu tiên gồm 1 số n (2\le n\le 10^5)
- Dòng tiếp theo gồm n số b_1,b_2,\dots,b_n (0\le b_i<2^{30})
- Dữ liệu đảm bảo tổng n trong tất cả testcase không quá 2\times 10^5
Output
- Xuất ra t dòng được định dạng như sau:
- Nếu không có dãy thỏa mãn, xuất
-1 - Ngược lại, xuất ra dãy a thỏa mãn có thứ tự từ điển nhỏ nhất, các giá trị được cách nhau bởi 1 dấu cách
- Nếu không có dãy thỏa mãn, xuất
Sample
Input
3
3
1 2 3
3
1 0 0
10
3 6 4 5 2 4 5 14 1 8
Output
0 1 3
-1
0 3 5 1 4 6 2 7 9 8
TLEoj Contest #03 - Đảo ngược đoạn con
dbthuan208 đang rất thích tin học, đặc biệt là những bài toán về tập hợp các số nguyên. Nhận thấy được sở thích bạn mình, đã nghĩ ra một bài để thách thức bạn mình, đề bài như sau:
Ta gọi dãy số a được gọi là dãy tăng nghiêm ngặt khi với mọi 1\le i<n thì a_i<a_{i+1}
Hai đoạn [l,r] và [u,v] được cho là không giao nhau khi không có giá trị i nào thỏa mãn đồng thời l\le i\le r và u\le i\le v
Yêu cầu: Cho một dãy số a gồm n phần tử, hãy chọn ra một số đoạn [l,r] không giao nhau trong mảng a sao cho khi đảo ngược tất cả các đoạn này trong dãy số (tức là biến đổi đoạn a_l,a_{l+1},\dots,a_r thành a_r,a_{r-1},\dots,a_l) thì dãy số a trở thành một dãy tăng nghiêm ngặt và số đoạn được chọn là ít nhất có thể.
dbthuan208 thấy đây là một bài toán quá khó đối với anh ấy, bạn có thể giúp anh ấy chứ?
Input, Output và Subtasks
Input
- Dòng thứ nhất gồm 1 số nguyên dương n cho biết độ dài của dãy a (1\le n\le 10^6)
- Dòng thứ hai gồm n số nguyên a_1,a_2,\dots,a_n (1\le a_i\le 10^9)
Output
- Dòng đầu tiên xuất ra 1 số k là số lượng dãy được chọn, sau đó là k dòng tiếp theo, mỗi dòng gồm 2 số biểu thị đoạn được chọn, các số được cách nhau bởi một dấu khoảng trắng. Các đoạn con được xuất ra theo thứ tự tăng dần theo vị trí.
- Trường hợp không có dãy thỏa mãn thì xuất
-1
Scoring
- Subtask 1 (30\%): 1\le n\le 10^3
- Subtask 2 (30\%): 1\le n\le 10^5
- Subtask 3 (40\%): Không có ràng buộc gì thêm
Sample
Input
10
3 2 1 6 5 4 9 8 7 10
Output
3
1 3
4 6
7 9
TLEoj Contest #03 - Bình phương giai thừa
weqd gọi 1 số là bình phương giai thừa nếu nó có thể được viết dưới dạng (k!)^2.
Bạn được weqd cho bạn 1 dãy số a gồm n số nguyên không âm và 1 số nguyên dương k. Nhiệm vụ của bạn là đếm số lượng dãy p độ dài k (không nhất thiết liên tiếp) thỏa mãn:
- p là dãy con (không nhất thiết liên tiếp) của tập {1,2,\dots,n}
- Gọi A=(a_{p_1}+a_{p_2})\times (a_{p_1}+a_{p_2}+a_{p_3})\times \dots \times(a_{p_1}+a_{p_2}+\dots+a_{p_k}) và B=(\frac{1}{a_{p_1}}+\frac{1}{a_{p_2}})\times (\frac{1}{a_{p_1}}+\frac{1}{a_{p_2}}+\frac{1}{a_{p_3}})\times \dots \times(\frac{1}{a_{p_1}}+\frac{1}{a_{p_2}}+\dots+\frac{1}{a_{p_k}}) thì A\times B=(k!)^2
Vì kết quả có thể rất lớn nên bạn hãy xuất kết quả sau khi mod\ 10^9+7
Input, Output và Subtasks
Input
- Dòng thứ nhất gồm 1 số t là số testcase (1\le t\le 10)
- Sau đó là t block được định dạng như sau:
- Dòng đầu tiên gồm 2 số n,k (2\le k\le n\le 10^5)
- Dòng tiếp theo gồm n số a_1,a_2,\dots,a_n (0\le a_i\le 10^9)
Output
- Xuất ra t dòng, mỗi dòng là kết quả tương ứng trong từng testcase
Scoring
- Subtask 1 (20\%): n\le 16
- Subtask 2 (20\%): k=2
- Subtask 3 (20\%): k\le 100
- Subtask 4 (40\%): Không có ràng buộc gì thêm
Sample
Input
3
4 2
1 2 3 4
6 2
1 3 2 2 1 2
4 3
2 1 2 2
Output
0
4
1
Note
- Trong testcase 1, không có dãy nào thỏa mãn
- Trong testcase 2, các dãy thỏa mãn là: {1,5}; {3,4}; {3,6}; {4,6}
- Trong testcase 3, dãy thỏa mãn là {1,3,4}
TLEoj Contest #03 - Phép xor
Bạn được cho một số nguyên dương n<2^{20}. Nhiệm vụ của bạn là tìm ba số nguyên dương x,y,z<2^{20} bất kỳ sao cho x\oplus y\oplus z=0 và x,y,z chia hết cho n, hoặc in ra ba số -1 nếu không có phương án.
Input, Output và Subtasks
Input
- Dòng đầu tiên gồm một số nguyên dương t\le 100 là số truy vấn.
- t dòng tiếp theo, mỗi dòng là một truy vấn, gồm một số nguyên dương n<2^{20}
Output
- Gồm t dòng, ở dòng thứ i nếu tồn tại phương án thì in ra một phương án bất kỳ. Trong trường hợp ngược lại in ra
-1 -1 -1(ba số-1cách nhau một dấu cách)
Scoring
- Subtask 1 (40\%): n<1024
- Subtask 2 (40\%): n\ge 1024
- Subtask 3 (20\%): Không có ràng buộc gì thêm
Sample
Input
1
5
Output
80 90 10
TLEoj Contest #03 - Đường đi ma trận
Bạn được cho một ma trận tam giác bậc n. Cụ thể là ma trận sẽ có định dạng như sau:
Tại ô (i,j) sẽ có giá trị là a_{i,j}. Bạn bắt đầu xuất phát từ đỉnh (1,1). Mỗi lượt bạn có thể di chuyển đến ô (i+1,j) hoặc ô (i+1,j+1). Nhiệm vụ của bạn là tìm một đường đi từ ô xuất phát đến đích là bất cứ ô nào ở hàng n sao cho tổng giá trị của tất cả các ô trên đường đi (tính cả ô xuất phát và kết thúc) là lớn nhất có thể
Input, Output và Subtasks
Input
- Dòng đầu tiên gồm một số nguyên dương n là bậc của ma trận (1\le n\le 1000)
- Sau đó là n dòng, dòng thứ i bao gồm i giá trị a_{i,1},a_{i,2},\dots,a_{i,i} (|a_{i,j}|\le 100). Các giá trị nhập vào được cách nhau bởi một dấu khoảng trắng
Output
- Một dòng duy nhất ghi kết quả của bài toán.
Sample
Input
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
Output
30
Note
Đường đi tối ưu: (1,1)\rightarrow (2,1)\rightarrow (3,1)\rightarrow (4,2)\rightarrow (5,2). Tổng là 7+3+8+7+5=30
TLEoj Contest #03 - Tam số
Một hôm nào đó, weqd đang làm toán. Thầy của anh ấy rất khó tính, nếu anh ấy làm sai 1 bài thì thầy lại cho anh ấy làm bài khó hơn. Vì lỡ tay viết nhầm dấu, nên kết quả bị sai, nên anh ấy bị thầy bắt làm 1 bài toán khó như sau:
Cho 6 số nguyên dương x_1, x_2, y_1, y_2, z_1, z_2. Nhiệm vụ của bạn là đếm số bộ ba số (a; b; c) với a, b, c thỏa mãn:
- x_1\le a\le x_2
- y_1\le b\le y_2
- z_1\le c\le z_2
- a(a^2-bc)-b(ac-b^2)-c(ab-c^2)=0
Đáng lẽ anh ấy có thể dùng điện thoại, nhưng máy điện thoại lại hết pin. Lúc này, bạn đang đem máy tính theo, bài này có thể giải nhanh hơn bằng máy tính, hãy giúp anh ấy.
Input, Output và Subtasks
Input
- Dòng thứ nhất gồm 1 số t là số testcase (1\le t\le 10^5)
- Sau đó là t dòng, mỗi dòng nhập 6 số x_1, x_2, y_1, y_2, z_1, z_2 (1\le x_1\le x_2\le 10^{18}, 1\le y_1\le y_2\le 10^{18}, 1\le z_1\le z_2\le 10^{18})
Output
- Xuất ra t dòng, mỗi dòng gồm 1 số tương ứng với kết quả từng testcase.
Scoring
- Subtask 1 (30\%): 1\le x_1\le x_2\le 10, 1\le y_1\le y_2\le 10, 1\le z_1\le z_2\le 10
- Subtask 2 (20\%): 1\le x_1\le x_2\le 10^{2}, 1\le y_1\le y_2\le 10^{2}, 1\le z_1\le z_2\le 10^{2}
- Subtask 3 (30\%): 1\le x_1\le x_2\le 10^{9}, 1\le y_1\le y_2\le 10^{9}, 1\le z_1\le z_2\le 10^{9}
- Subtask 4 (20\%): Không có ràng buộc gì thêm
Sample
Input
1
3 4 4 4 4 5
Output
1
Note
Chỉ có duy nhất 1 bộ số (4,4,4) thỏa mãn
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 :(
TLEoj Contest #03 - Số tuyệt vọng
Hôm nay trên đường về nhà, Sayu-chan bỗng nghĩ ra một loại số mới và nó mang tên là số tuyệt vọng. Một số nguyên dương N được gọi là số tuyệt vọng nếu nó chứa chính xác K chữ số khác nhau.
Sayu-chan hiện tại cũng đang có hai số nguyên dương L và R. Cô ấy muốn biết được tổng của các số tuyệt vọng trong đoạn [L,R]. Bạn hãy giúp Sayu-chan nhé.
Input, Output và Subtasks
Input
- Dòng thứ nhất gồm 1 số nguyên dương T là số testcase (1\le T\le 10^5)
- Sau đó là t dòng, mỗi dòng nhập 3 số nguyên dương L,R,K (1\le L\le R\le 10^{18},1\le K\le 10)
Output
- Xuất ra T dòng, mỗi dòng gồm 1 số tương ứng với kết quả từng testcase. Vì kết quả có thể rất lớn nên hãy xuất kết quả sau khi mod\ 1234567891
Scoring
- Subtask 1 (30\%): 1\le L\le R\le 10^6
- Subtask 2 (40\%): T\le 20
- Subtask 3 (30\%): Không có ràng buộc gì thêm
Sample
Input
2
10 34 1
24 513 2
Output
66
37458
Note
Ở ví dụ 1, các số tuyệt vọng là 11,22,33. Tổng của chúng là 11+22+33=66.
TLEoj Contest #03 - Đếm ma trận
Bạn được cho một ma trận n\times m. Với mỗi ô (i,j) trong ma trận có thể sẽ có giá trị 0 hoặc 1.
thực hiện 1 trò chơi trong ma trận như sau. Ban đầu bạn sẽ ở vị trí (1,1). Từ ô (i,j) bạn có thể đi đến 1 trong 2 ô (i+1,j)\ (i<n) hoặc (i,j+1)\ (j<m). Dễ dàng nhận thấy sau 1 số bước ta sẽ đến được ô (n,m). Ta gọi giá trị của đường đi từ ô (x_1,y_1) đến ô (x_2,y_2) là tổng XOR của tất cả giá trị trên đường đi (tính cả ô xuất phát và ô kết thúc).
Trong đó, XOR là phép toán bit xor. Bạn có thể đọc tại đây
Với một ma trận kích thước n\times m, ta gọi ma trận đó là ma trận đẹp nếu với mọi đường đi hợp lệ từ ô (1,1) đến ô (n,m) thì giá trị của các đường đi đó đều bằng 1
Nhiệm vụ của bạn là hãy đếm số cách điền các giá trị 0 hoặc 1 vào ma trận sao cho ma trận đó là ma trận đẹp. Vì kết quả có thể rất lớn nên hãy xuất kết quả sau khi mod\ 10^9+7
Input, Output và Subtasks
Input
- Dòng thứ nhất gồm 1 số t là số testcase (1\le t\le 10)
- Sau đó là t dòng, mỗi dòng nhập 2 số n,m (1\le n,m\le 10^{18})
Output
- Xuất ra t dòng, mỗi dòng gồm 1 số tương ứng với kết quả từng testcase.
Scoring
- Subtask 1 (20\%): n,m\le 4
- Subtask 2 (20\%): n=1 hoặc m=1
- Subtask 3 (20\%): n,m\le 1000
- Subtask 4 (20\%): n,m\le 10^6
- Subtask 5 (20\%): Không có ràng buộc gì thêm
Sample
Input
3
1 1
1 2
2 2
Output
1
2
4
Note
Trong test ví dụ đầu tiên, có 1 ma trận đẹp thỏa mãn là:
Example 1
1
Trong test ví dụ thứ hai, có 2 ma trận đẹp thỏa mãn là:
Example 2
10
01
Trong test ví dụ cuối cùng, có 4 ma trận đẹp thỏa mãn là:
Example 3
10
00
00
01
01
10
11
11
TLEoj Cup Final Day 1 - Cặp số độc lập
Một cặp số nguyên dương (i, j) được gọi là độc lập với nhau khi và chỉ khi i\ \&\ j = 0, trong đó \& là phép toán thao tác bit AND.
Bạn được cho một dãy số nguyên dương a. Nhiệm vụ của bạn là đếm xem trong dãy có bao nhiêu cặp số độc lập.
Input, Output và Subtask
Input (IPN.inp)
- Dòng đầu tiên gồm một số nguyên dương n - số phần tử của dãy (n \le 10^5).
- Dòng tiếp theo gồm n số nguyên dương a_i là các giá trị của dãy (a_i \le 10^9).
Output (IPN.out)
- Một dòng duy nhất là số cặp số độc lập trong dãy.
Subtask
- 30\% số điểm có n \le 10^4.
- 30\% số điểm khác có a_i \le 10^4.
- 40\% số điểm còn lại không có giới hạn gì thêm.
Sample 1
Input (IPN.inp)
8
1 2 3 4 5 6 7 8
Output (IPN.out)
13
Notes
Các cặp số độc lập là (x, 8) với mọi x < 8, (x, 4) với mọi x < 4, (1, 2), (2, 5), (1, 6)