Trại hè Phương Nam 2024 - Ước số

remyvnkhiemtruong

Các ước số tự nhiên có vai trò quan trọng trong nhiều thuật toán mã hóa, chẳng hạn như RSA, một thuật toán mã hóa công khai phổ biến. Việc tạo ra dãy các ước số của một tập hợp số tự nhiên có thể giúp hiểu được cách các ước số phân phối và ảnh hưởng đến tính bảo mật của mã hóa. Là một người yêu thích môn mật mã, Nam quan sát đặc điểm các ước số của một tập hợp số tự nhiên thông qua bài toán sau.

Nam có một dãy số A gồm N phần tử, mỗi phần tử là một số tự nhiên khác 0. Gọi D là dãy các phần tử có giá trị không giảm gồm tất cả các ước số tự nhiên, không nhất thiết phải phân biệt của các phần tử của A. Nam chuẩn bị dãy P gồm Q số tự nhiên khác 0, mỗi số biểu thị một vị trí trong dãy D. Do dãy D chưa được cho trước mà phải tính toán thông qua các giá trị trong dãy A và N, Nam mong muốn xác định nhanh từng giá trị phần tử trong dãy D tương ứng với mỗi phần tử thuộc dãy P. Ví dụ: với N = 4, A = (10, 2, 5, 2) và P = (5, 1, 10), ta có dãy D = (1, 1, 1, 1, 2, 2, 2, 5, 5, 10) và các giá trị phần tử trong dãy D tương ứng với mỗi phần tử thuộc dãy P là (2, 1, 10).

Yêu cầu: Hãy giúp Nam xác định từng phần tử trong dãy D tương ứng với với mỗi phần tử trong dãy P.

Input, Output

Input: (DIV.INP)

Vào từ file văn bản DIV.INP:

  • Dòng đầu tiên chứa hai số nguyên dương N và Q lần lượt là số lượng phần tử dãy A và số lượng phần tử dãy P (1 \le N \le 10^6; 1 \le Q \le 10^5).
  • Dòng thứ hai chứa N số nguyên dương A_1, A_2,..., A_N mô tả dãy A (1 \le A_i \le 10^6).
  • Dòng thứ ba chứa Q số nguyên dương P_1, P_2,..., P_Q mô tả dãy P (1 \le P_i \le |D|, với |D| là số lượng phần tử dãy D).

Các số trên cùng một dòng cách nhau bởi dấu cách.

Output: (DIV.OUT)
  • Ghi ra file văn bản DIV.OUT duy nhất một dòng gồm Q số nguyên, cách nhau bởi dấu cách, là các phần tử trong dãy D tương ứng với các phần tử trong dãy P.

Sample

Subtask
  • Có 25\% số test ứng với 25\% số điểm của bài thoả mãn: N, Q \le 1000; A_i \le 1000 với mọi 1 \le i \le N; P_i \le 1000 với mọi 1 \le i \le Q.
  • 25\% số test khác ứng với 25\% số điểm của bài thoả mãn: A_i là số nguyên tố với mọi 1 \le i \le N.
  • 20\% số test khác ứng với 20\% số điểm của bài thoả mãn: N \le 10 000; P_i \le 2 · 10^6 với mọi 1 \le i \le Q.
  • 20\% số test khác ứng với 20\% số điểm của bài thoả mãn: P_i \le 2·10^6 với mọi 1 \le i \le Q.
  • 10\% test còn lại ứng với 10\% số điểm của bài: Không có ràng buộc gì thêm.

Trù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: CAU3.INP
  • Tệp ra: CAU3.OUT
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

Bedan Contest #05 - F - Đảo ngược

flo

Cho dãy a và b gồm n phần tử là hoán vị của n. Bạn được thực hiện thao tác tối đa n lần:

  • Chọn 2 số nguyên dương l và r (1 \le l \le r \le n), sau đó đảo ngược đoạn con [l, r] của a.

Nhiệm vụ của bạn là in ra m (0 \le m \le n) là số thao tác và m thao tác bạn cần thực hiện để biến đổi dãy a thành b.

Input and Output

Input
  • Số nguyên dương n (1 \le n \le 10^3).
  • Dãy a gồm n phần tử a_1, a_2, ..., a_n (1 \le a_i \le n).
  • Dãy b gồm n phần tử b_1, b_2, ..., b_n (1 \le b_i \le n).
Output
  • In ra m là số thao tác, sau đó là m dòng tương ứng với m thao tác cần thực hiện.
  • Nếu có nhiều cách thực hiện thao tác thỏa mãn, hãy in ra một cách bất kì.

Test

Input
5
4 2 3 5 1
1 5 4 2 3 
Output
3
3 5
1 3
2 4
Note
  • Ngoài cách trên, đảo ngược đoạn [1, 5] rồi đến [1, 3] cũng được tính là đúng.

Bedan Contest #03 - B - Hộp kẹo

flo

Một năm nữa lại trôi qua và một năm mới đang đến gần với chúng ta. Đối với flo, năm vừa qua là một năm không có gì là may mắn, khá thăng trầm nhưng cũng để lại trong tâm trí cậu nhiều kỉ niệm khó nhớ. Một trong số đó có lẽ là những ngày ôn tập chuẩn bị cho kì thi cuối kì I của flo diễn ra trong 2 tuần. Trong thời gian đó, cậu đã phải chịu đựng nhiều đau đớn và trải qua nhiều khó khăn. Nhưng rồi kì thi ấy cũng trôi qua, kết quả mà flo đạt được đã vượt xa mong đợi của cậu. Vì thế mà flo vô cùng vui bởi kết quả cho những đau đớn mà cậu trải qua lại vô cùng xứng đáng.

Năm mới đã đến và kết quả thi cử của flo rất tốt nên cậu đã được mẹ cậu thưởng n hộp kẹo với vô vàng loại kẹo khác nhau. Những hộp kẹo này còn có cho mình 1 độ ngon nhất định khi hộp thứ i có độ ngon là a_i. Tuy nhiên nếu ăn hết bây giờ thì sẽ quá lãng phí nên flo quyết định ăn n hộp kẹo này trong những ngày tới. Mỗi ngày, cậu sẽ chọn 1 số nguyên dương m bất kỳ và ăn m viên kẹo đầu tiên sao cho độ phong phú của m hộp kẹo đó giao động từ l đến r. Đối với flo, độ phong phú của một dãy hộp kẹo là số lượng độ ngon khác nhau của các hộp kẹo đó. Khi ăn như vậy sẽ giúp cậu có thể cảm nhận được sự hòa quyện của các loại kẹo với nhau, từ đó tạo nên một vị ngon khó cưỡng.

Vì là một con người coi trọng việc tiết kiệm, flo muốn ăn theo cách trên nhưng cậu phải ăn hết kẹo mà không chưa lại hộp kẹo nào. Tuy nhiên do số lượng hộp kẹo mà mẹ của flo tặng cho cậu quá lớn làm cho cậu không biết phải phân chia để ăn như thế nào mới có thể thỏa mãn được cậu. Bạn hãy tính giúp flo nhé.

Input, Output and Scoring

Input
  • 3 số nguyên dương n, l, r (1 \le l \le r \le n \le 10^5).
  • Dãy a gồm n phần tử a_1, a_2, ..., a_n (1 \le a_i \le 10^9).
Output
  • In ra kết quả sau khi chia lấy dư cho 1234567891.
Scoring
  • Subtask 1 (10\%): 1 \le n \le 10.
  • Subtask 2 (20\%): 1 \le n \le 10^2.
  • Subtask 3 (30\%): 1 \le n \le 10^3.
  • Subtask 4 (40\%): Không giới hạn gì thêm.

Test 1

Input
3 1 2
2 3 2
Output
4
Note
  • Cách ăn kẹo mà thỏa mãn được nhu cầu của flo như sau.
    • Ngày đầu tiên, flo sẽ ăn 2 hộp kẹo đầu tiên có độ phong phú là 2. Khi đó, cậu chỉ còn 1 hộp kẹo là [2]. Đến ngày thứ hai, flo sẽ ăn 1 hộp kẹo đầu tiên có độ phong phú là 1. Khi đó, flo sẽ ăn hết kẹo.
    • Ngày đầu tiên, flo sẽ ăn 1 hộp kẹo đầu tiên có độ phong phú là 1. Khi đó, cậu chỉ còn 2 hộp kẹo là [3, 2]. Đến ngày thứ hai, flo sẽ ăn 2 hộp kẹo đầu tiên có độ phong phú là 2. Khi đó, flo sẽ ăn hết kẹo.
    • Mỗi ngày flo có thể ăn 1 hộp kẹo với độ phong phú là 1. Sau 3 ngày, flo sẽ ăn hết kẹo.
    • Ngày đầu tiên, flo sẽ ăn hết cả 3 hộp kẹo có độ phong phú là 3.
  • Vì vậy, flo có tổng cộng 4 cách ăn kẹo khác nhau thỏa mãn cậu.

Test 2

Input
6 2 4
1 2 1 3 2 2
Output
3
Note
  • Cách ăn kẹo mà thỏa mãn được nhu cầu của flo như sau.
    • Ngày đầu tiên, flo sẽ ăn 2 hộp kẹo đầu tiên có độ phong phú là 2. Khi đó, cậu chỉ còn 4 hộp kẹo là [1, 3, 2, 2]. Đến ngày thứ hai, flo sẽ ăn 4 hộp kẹo đầu tiên có độ phong phú là 3. Khi đó, flo sẽ ăn hết kẹo.
    • Ngày đầu tiên, flo sẽ ăn 3 hộp kẹo đầu tiên có độ phong phú là 2. Khi đó, cậu chỉ còn 3 hộp kẹo là [3, 2, 2]. Đến ngày thứ hai, flo sẽ ăn 3 hộp kẹo đầu tiên có độ phong phú là 2. Khi đó, flo sẽ ăn hết kẹo.
    • Ngày đầu tiên, flo sẽ ăn hết cả 6 hộp kẹo có độ phong phú là 3.
  • Vì vậy, flo có tổng cộng 3 cách ăn kẹo khác nhau thỏa mãn cậu.

TLE-oj Cup Round 3 - Tổng bằng không

Sunlight

Cho một dãy số nguyên a_1, a_2, ..., a_n và q truy vấn, mỗi truy vấn gồm hai số nguyên dương l, r, hãy tìm số bộ ba số nguyên a_i, a_j, a_k sao cho l \le i < j < k \le r và a_i + a_j + a_k = 0.

Input, Output và Subtasks

Input: (TRIPLE.inp)
  • Dòng đầu tiên gồm hai số nguyên dương n \le 5000 và q \le 10^5.
  • Dòng tiếp theo gồm n số nguyên dương a_1, a_2, ..., a_n (|a_i| \le 10^6).
  • q dòng tiếp theo, mỗi dòng gồm hai số nguyên dương l, r mô tả mỗi truy vấn.
Output: (TRIPLE.out)
  • Gồm q dòng, dòng thứ i là kết quả truy vấn thứ i.
Subtasks
  • Subtask 1 (10\%): n, q \le 100.
  • Subtask 2 (10\%): |a_i| \le 10.
  • Subtask 3 (10\%): n, q \le 500.
  • Subtask 4 (15\%): n \le 500.
  • Subtask 5 (15\%): n, q \le 2000.
  • Subtask 6 (15\%): n \le 2000.
  • Subtask 7 (25\%): Không có giới hạn gì thêm.

Sample

Input (TRIPLE.inp)
7 3
2 0 -1 1 -2 3 3
1 5
2 4
1 7
Output (TRIPLE.out)
2
1
4
Notes
  • Trong dãy có các bộ (i, j, k) sau thỏa mãn a_i + a_j + a_k = 0:
    • (1, 2, 5).
    • (2, 3, 4).
    • (3, 5, 6).
    • (3, 5, 7).

TỆP TIN (Đắk Nông 2024)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: FILEDEL.INP
  • Tệp ra: FILEDEL.OUT
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

Đố vui tin học (HSG9 VT 2023)

Sunlight

Để tổng kết phát thưởng cho cuộc thi Đố vui tin học, Ban tổ chức có N phần quà được đánh thứ tự từ 1 tới N, phần quà thứ i có giá trị a_i. Ban tổ chức yêu cầu học sinh chọn các phần quà theo quy tắc sau:

  • Phần quà chọn sau phải có số thứ tự lớn hơn phần quà chọn trước đó.
  • Phần quà chọn sau phải có giá trị lớn hơn phần quà chọn trước đó ít nhất K giá trị

Yêu cầu: Hãy giúp các bạn học sinh lựa chọn theo quy tắc ban tổ chức đặt ra sao cho số lượng phần quà được chọn là nhiều nhất

Input và Output

Input: (GIFT.inp)
  • Dòng đầu tiên chứa 2 số nguyên dương N và K cách nhau một ký tự trắng (N\le 10^4, K\le 10^3)
  • N dòng tiếp theo, dòng thứ i chứa số nguyên dương a_i (a_i\le 10^6) là giá trị của phần quà thứ i
Output: (GIFT.out)
  • Một dòng duy nhất chứa số lượng phần quà nhiều nhất thỏa mãn yêu cầu
Bonus

Bạn có thể giải bài toán này với N\le 10^6 ?

Subtasks
  • Subtask 1 (10\%): N\le 20.
  • Subtask 2 (30\%): N\le 10^4.
  • Subtask 3 (30\%): N\le 10^5.
  • Subtask 4 (30\%): Không có giới hạn gì thêm.

Sample

Input (GIFT.inp)
5 2
4
5
6
4
8
Output (GIFT.out)
3

Đoán số (TS10 QNi 2023)

Sunlight

An và Chi đang chơi một trò chơi đoán số như sau:

An nghĩ ra 4 số nguyên dương: số đầu tiên anh ta chọn là 1 số nguyên dương bất kỳ, mỗi số tiếp theo bằng số trước đó cộng với cùng một hằng số dương nào đó. Sau đó An đưa cho Chi một mảnh giấy mà anh ta đã viết 3 số được chọn ngẫu nhiên trong 4 số. Chi sẽ thắng nếu đoán đúng số còn thiếu. Bạn hãy giúp Chi tìm các số có thể là số còn thiếu

Một số có thể là số còn thiếu nếu nó là số nguyên dương và nó cùng với 3 số ghi trên mảnh giấy có thể sắp xếp theo một thứ tự nào đó sao cho mỗi số kể từ thứ hai trở đi, bằng số liền kề trước đó cộng với cùng một hằng số dương nào đó

Input, Output và Subtasks

Input: (gues.inp)
  • Gồm 1 dòng chứa 3 số nguyên a,b,c (1\le a,b,c\le 10^9) là 3 số được ghi trên mảnh giấy mà An đưa cho Chi. Dữ liệu vào đảm bảo rằng số còn thiếu luôn tồn tại
Output: (gues.out)
  • Chứa các số có thể là số còn thiếu, theo thứ tự tăng dần
Subtasks
  • Subtask 1 (40\%): b-a=c-b>0
  • Subtask 2 (30\%): 1\le a,b,c\le 10^3
  • Subtask 3 (30\%): Không có giới hạn gì thêm.

Sample

Input (gues.inp)
4 6 8
Output (gues.out)
2 10

Sample

Input (gues.inp)
10 1 4
Output (gues.out)
7

Tổng lớn nhất (Hà Nội (ĐHSP) 2025)

Đề 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

Trọng số (Bình Dương 2024)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: Bàn phím
  • Tệp ra: Màn hình
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

Giải mã thư (Cần Thơ 2024)

Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.

  • Tệp vào: THU.INP
  • Tệp ra: THU.OUT
  • Thời gian chạy: 1.0s
  • Bộ nhớ: 1024MB

TLE Speedrun - Tích hai số

Sunlight
Input và Output
Input
  • Hai số nguyên dương A, B (1 \le A, B \le 10^9).
Output
  • Giá trị A \times B.
Sample
Input
2 3
Output
6

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

TLE-oj Cup Round 1 - Cập nhật bảng

khanhphucscratch

Cho một bảng n hàng, m cột. Ô giao giữa hàng i và cột j được kí hiệu là ô (i,j). Ban đầu mỗi ô đều có giá trị bằng 0. Cho q truy vấn, thuộc một trong ba loại sau:

  • 1\, x: Tăng tất cả các số trong bảng lên x đơn vị (1\leq x\leq 10^9)
  • 2\, x\, l\, r: Tăng ô (x,i) lên (i-l+1)^2 đơn vị với mọi l\leq i\leq r (1\leq x\leq n, 1\leq l\leq r\leq m)
  • 3\, x\, l\, r: Tăng ô (i,x) lên (i-l+1)^2 đơn vị với mọi l\leq i\leq r (1\leq x\leq m, 1\leq l\leq r\leq n)

Yêu cầu: In ra bảng sau tất cả q truy vấn.

Input, Output và Scoring

Input (UPDATE.inp)
  • Dòng đầu tiên gồm ba số nguyên dương n,m,q (1\leq m,n\leq 1000, 1\leq q\leq 10^6).
  • q dòng tiếp theo, mỗi dòng gồm các truy vấn thuộc một trong ba loại trên.
Output (UPDATE.out)
  • In ra m dòng, mỗi dòng in ra n số. Số thứ j trong dòng thứ i in ra phần dư của giá trị ô (i,j) sau khi chia cho 10^9+7.

Sample

Input (UPDATE.inp)
3 2 3
2 3 1 2
3 1 2 3
1 2 
Output (UPDATE.out)
2 2
3 2
7 6

Trại hè Phương Nam 2024 - Phương Nam

remyvnkhiemtruong

Phương Nam có N khu vực hành chính, được đánh số từ 1 đến N, được kết nối liên thông bởi N - 1 con đường tạo thành dạng cây trong lý thuyết đồ thị. Mỗi khu vực tương ứng với một đỉnh của cây, mỗi con đường tương ứng với một cạnh của cây. Nhắc lại, cây là một đồ thị vô hướng, liên thông và không có chu trình. Mỗi khu vực người ta gán cho một giá trị biểu thị mức độ phát triển khu vực đó, khu vực thứ i có có giá trị A_i.

Nhằm quy hoạch phát triển các khu vực một cách hiệu quả, người ta đánh giá một cụm S các khu vực liên thông nhau thông qua các con đường nối giữa chúng trong cụm đó bởi một độ hiệu quả. Giá trị độ hiệu quả này được tính bằng hiệu của giá trị lớn nhất trong số các giá trị khu vực thuộc S và giá trị nhỏ nhất trong số các giá trị khu vực thuộc S. Nói cách khác, với một cụm liên thông S, giá trị của S là max_{u∈S} A_u - min_{u∈S} A_u.

Người ta muốn chia toàn bộ N khu vực thành các cụm khu vực riêng biệt, mỗi cụm bao gồm một hoặc nhiều khu vực liên thông nhau bởi các con đường nối các khu vực trong cụm đó và đánh giá độ hiệu quả trên mỗi cụm. Tổng độ hiệu quả của một cách chia như vậy được tính bằng tổng giá trị của các cụm liên thông trong cách chia đó.

Yêu cầu: Hãy tìm cách chia toàn bộ N khu vực thành các cụm có tổng độ hiệu quả lớn nhất.

Input, Output

Input: (SOUTH.INP)

Vào từ file văn bản SOUTH.INP:

  • Dòng thứ nhất chứa một số nguyên N (1 \le N \le 3 · 10^5) là số lượng khu vực ở Phương Nam.
  • Dòng thứ hai chứa N số nguyên A_1, A_2,..., A_N (1 \le A_i \le 10^9) mô tả độ phát triển của khu vực tương ứng.
  • Dòng thứ i trong N - 1 dòng tiếp theo chứa hai số nguyên u_i, v_i (1 \le u_i, v_i \le N) mô tả một con đường nối hai khu vực u_i và v_i. Dữ liệu đảm bảo các con đường này tạo thành một cây.

Các số trên cùng một dòng cách nhau bởi dấu cách.

Output: (SOUTH.OUT)
  • Ghi ra file văn bản SOUTH.OUT một số nguyên duy nhất là tổng độ hiệu quả lớn nhất tìm được.

Sample

Subtask
  • Có 30\% số test ứng với 30\% số điểm của bài thoả mãn: N \le 20.
  • 30\% số test khác ứng với 30\% số điểm của bài thoả mãn: N \le 2000, và tất cả các đỉnh có bậc không quá 2.
  • 20\% số test khác ứng với 20\% số điểm của bài thoả mãn: Tất cả các đỉnh có bậc không quá 2.
  • 20\% số test còn lại ứng với 20\% số điểm của bài: Không có ràng buộc gì thêm.

Giải thích

Trong các hình vẽ minh họa bên trên, mỗi đỉnh tượng trưng cho một khu vực bao gồm hai số, số thứ nhất là chỉ số của khu vực, số thứ hai là giá trị của khu vực đó. Các đường đi được mô tả bằng các cạnh nỗi giữa các đỉnh.

TLEoj Contest #01 - Cặp số đầy đủ

huyhau6a2

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 #05 - Đếm số có k ước

nathan4690

Cho hai số nguyên dương n và k, đếm số lượng số nguyên dương x phân biệt thỏa mãn đồng thời hai điều kiện sau:

  • 1 \leq x \leq n
  • x có đúng k ước nguyên dương

Input, Output và Subtasks

Input
  • Dòng đầu tiên chứa số nguyên dương T là số lượng bộ test (1 \leq T \leq 100)
  • T dòng tiếp theo, mỗi dòng chứa hai số nguyên dương n và k là dữ liệu cho bộ test (1 \leq n \leq 10^9; 1 \leq k \leq 10)
Output
  • Xuất ra T dòng, mỗi dòng chứa một số nguyên dương là kết quả tương ứng trong từng bộ test
Subtasks
  • Subtask 1 (20\%): n \leq 100; k \leq 3
  • Subtask 2 (20\%): n \leq 5000
  • Subtask 3 (20\%): n \leq 3 \times 10^5
  • Subtask 4 (20\%): n \leq 10^7; k \leq 5
  • Subtask 5 (20\%): Không có ràng buộc gì thêm

Sample 1

Input
3
3 1
10 2
49 3
Output
1
4
4
Note
  • Trong testcase 1, chỉ có số 1 thỏa mãn có 1 ước
  • Trong testcase 2, có 4 số thỏa mãn là 2,3,5,7
  • Trong testcase 3, có 4 số thỏa mãn là 4,9,25,49