Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án)

Câu 1. Ba đường truyền điện (7,0 điểm)

Quốc gia Alpha có một trang trại điện gió được quy hoạch bởi một bảng vuông N hàng và N cột. Các hằng được đánh số từ 1 tới N từ trên xuống dưới, các cột được đánh số từ 1 tới N từ trái sang phải. Trang trại có M trạm sản xuất điện gió được đánh số từ 1 tới M. Trạm thứ i(1 ≤ i ≤ M) được đặt tại ô thuộc hàng Ri, cột Ci và có công suất sản xuất là Wi oát. Chủ trang trại mới ký hợp đồng cung cấp điện cho đối tác. Trang trại sẽ phải lắp ba đường truyền điện, mỗi đường truyền đi qua một hàng hoặc một cột trong bảng. Các đường truyền có thể cắt nhau nhưng không được trùng nhau. Tổng công suất cung cấp cho đối tác là tổng công suất của các trạm điện nằm trên ít nhất một trong ba đường truyền. Trang trại cần tìm ra cách lắp đặt ba đường truyền để tổng công suất cung cấp là lớn nhất có thể.

Ngoài ra, công ty có Q phương án điều chỉnh. Phương án điều chỉnh thứ j(1 ≤ j ≤ Q) là tăng công suất của trạm Tj thêm một lượng Dj oát và giữ nguyên công suất Wi oát như hiện trạng ban đầu của mọi trạm i khác Tj. Lưu ý, các phương án là độc lập, nghĩa là các phương án đều chỉ áp dụng lên hiện trạng ban đầu của trang trại.
Yêu cầu: Hãy đưa ra tổng công suất lớn nhất có thể khi lắp ba đường truyền với hiện trạng ban đầu của trang trại và trong Q phương án điều chỉnh.

Dữ liệu

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

- Dòng đầu ghi một số nguyên dương T là số lượng trường hợp test.

- Mỗi nhóm dòng trong số T nhóm dòng tiếp theo mô tả một trường hợp test có cấu trúc như sau:

- Dòng thứ nhất chứa ba số nguyên N, M và Q lần lượt là kích thước bảng, số lượng trạm điện và số lượng phương án điều chỉnh (3 ≤ N ≤ 10⁹; 3 ≤ M ≤ 10⁵; 1 ≤ Q ≤ 10⁵).

- Dòng thứ i trong số M dòng tiếp theo chứa ba số nguyên Ri, Ci và Wi lần lượt là vị trí hàng, vị trí cột và công suất của trạm điện thứ i. Dữ liệu bảo đảm không có hai trạm nào đặt tại cùng một ô (1 ≤ Ri, Ci ≤ N; 1 ≤ Wi ≤ 10⁹).

- Dòng thứ j trong số Q dòng tiếp theo chứa hai số nguyên Tj và Dj thể hiện phương án điều chỉnh tăng công suất thêm Dj oát cho trạm điện thứ Tj(1 ≤ Tj ≤ M ; 1 ≤ Dj ≤ 10¹⁸).

- Gọi ∑M và ∑Q tương ứng là tổng của tát cả các giá trị M và Q trong tất cả T trường hợp test. Dữ liệu bảo đảm 1 ≤ ∑M , ∑Q ≤ 2 x 10⁵.

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

Kết quả

Ghi ra file văn bản THREE.OUT:

- Gồm T nhóm dòng, mỗi nhóm dòng là kết quả của trường hợp test tương ứng có cấu trúc sau:

- Dòng thứ nhất ghi ra một số nguyên dương là tổng công suất lớn nhất tìm được với hiện trạng trang trại ban đầu.

- Dòng thứ j trong số Q dòng tiếp theo ghi ra tổng công suất lớn nhất tìm được với phương án điều chỉnh thứ j.

docx 438 trang tinhoc 02/09/2025 80
Bạn đang xem 30 trang mẫu của tài liệu "Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án)

Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án)
 Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án) - DeThiTinHoc.net
 DeThiTinHoc.net Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án) - DeThiTinHoc.net
 ĐỀ SỐ 1
 BỘ GIÁO DỤC & ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI QUỐC GIA 
 THPT - NĂM HỌC 2024-2025
 ĐỀ CHÍNH THỨC Môn: TIN HỌC
 Thời gian: 180 phút (Không kể thời gian giao đề)
 TỔNG QUAN ĐỀ THI
 Tiêu đề File chương trình File dữ liệu File kết quả
Bài 1 Người giao hàng SHIP.* SHIP.INP SHIP.OUT
Bài 2 Lập trình Robot AI ROAI.* ROAI.INP ROAI.OUT
Bài 3 Số nguyên dương PNUM.* PNUM.INP PNUM.OUT
- Dấu * được thay thế bởi PAS hoặc CPP hoặc PY tương ứng với ngôn ngữ lập trình Pascal 
hoặc C++ hoặc Python. 
- Mỗi bài bao gồm nhiều subtask, mỗi subtask bao gồm nhiều test đơn, điểm của thí sinh 
được tính theo từng test đơn.
Hãy lập trình giải các bài toán sau:
Bài 1. Người giao hàng (7,0 điểm)
Ở một quốc gia nọ có N hòn đảo, được đánh số lần lượt từ 1 đến N. Có N-1 cây cầu, mỗi cây 
cầu nối trực tiếp 2 hòn đảo tạo thành một quần thể đảo mà giữa hai hòn đảo bất kì luôn tồn 
tại đường đi thông qua một cây cầu hoặc một dãy các cây cầu.
Tuấn là một người giao hàng của công ty VOI. Ban đầu Tuấn ở hòn đảo 1, được giao K 
nhiệm vụ giao hàng theo thứ tự từ 1 đến K và Tuấn phải xử lý các nhiệm vụ theo đúng thứ tự 
đó. Với nhiệm vụ thứ i(1 ≤ i ≤ K). Tuấn cần thực hiện giao hàng từ hòn đảo Ui đến hòn đảo 
Vi theo đường đi ghé qua ít hòn đảo nhất. Tuấn chỉ có thể thực hiện nhiệm vụ giao hàng thứ i 
nếu vị trí của Tuấn đang ở Ui và sau khi hoàn thành giao hàng thì vị trí của Tuấn sē là Vi. 
Lưu ý đối với mỗi nhiệm vụ, Tuấn có thể thực hiện hoặc từ chối giao hàng. Đối với mỗi hòn 
đảo, công ty đặt một giá trị phần thưởng mà người giao hàng có thể nhận được cho mỗi lần 
ghé qua. Với mỗi nhiệm vụ hoàn thành, Tuấn sẽ nhận được phần thưởng là giá trị lớn nhất 
trong số các giá trị của các hòn đảo nằm trên đường đi giao hàng, tính cả hòn đảo xuất phát 
và hòn đảo kết thúc.
Yêu cầu: Hãy tính tổng giá trị phần thưởng lớn nhất mà Tuấn có thể nhận được sau K nhiệm 
vụ.
Dữ liệu
Vào từ file văn bản SHIP.INP:
- Dòng đầu chứa một số nguyên N là số lượng hòn đảo (1 ≤ N ≤ 2 x 105)
 DeThiTinHoc.net Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án) - DeThiTinHoc.net
- Dòng thứ hai chứa N số nguyên W1, W2,, WN là giá trị phần thưởng tại các hòn đảo 
 9
(0 ≤ W1, W2,, WN ≤ 10 )
- Mỗi dòng trong số N-1 dòng tiếp theo chứa 2 số nguyên dương thể hiện cây cầu kết nối 
giữa 2 hòn đảo.
- Dòng tiếp theo chứa một số nguyên K là số lượng nhiệm vụ (1 ≤ K ≤ 2 x 105).
- Dòng thứ I trong số K dòng tiếp theo chứa 2 số nguyên dương Ui và Vi thể hiện nhiệm vụ 
giao hàng thứ i (1 ≤ Ui , Vi ≤ N; Ui ≠ Vi)
Các số trên cùng một dòng cách nhau bởi dấu cách
Kết quả
Ghi ra file văn bản SHIP.OUT:
- Một số nguyên duy nhất thể hiện tổng giá trị phần thưởng lớn nhất mà Tuấn có thể nhận 
được sau K nhiệm vụ.
Ví dụ
 SHIP.INP SHIP.OUT Giải thích
4 6
1 2 3 4
1 2
2 3
3 4
4 
1 3
1 2
2 3
2 4 - Tuấn thực hiện các nhiệm vụ 2, 4 và từ chối các nhiệm 
 vụ 1, 3.
 - Tổng giá trị phần thưởng Tuấn nhận được là 2 + 4 = 6
7 37
1 5 5 7 3 16 1
1 4
1 2
2 3
4 5
5 6
5 7
7
1 3
3 2 - Tuấn thực hiện các nhiệm vụ 3, 4, 5, 7 và từ chối các 
 nhiệm vụ còn lại.
 DeThiTinHoc.net Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án) - DeThiTinHoc.net
1 4 - Tổng giá trị phần thưởng Tuấn nhận được là 
4 2 7 + 7 + 7 + 16 = 37
2 5
5 7
5 6
Chấm điểm
- Subtask 1 (20% số điểm): N, K ≤ 100 và hòn đảo i có cây cầu nối với hòn đảo 
i + 1 (∀i: 1 ≤ i ≤ N – 1).
- Subtask 2 (20% số điểm): N ≤ 10 000 ; K ≤ 100 và hòn đảo i có cây cầu nối với hòn đảo 
i + 1 (∀i: 1 ≤ i ≤ N – 1).
- Subtask 3 (20% số điểm): Hòn đảo i có cây cầu nối với hòn đảo i + 1 (∀i: 1 ≤ i ≤ N – 1).
- Subtask 4 (20% số điểm): N ≤ 10 000 và K ≤ 100.
- Subtask 5 (20% số điểm): Không có ràng buộc nào thêm.
Bài 2. Lập trình Robot AI (7,0 điểm)
Trong cuộc thi trí tuệ nhân tạo ROAI2025, Ban tổ chức yêu cầu các đội chơi lập trình Robot 
AI trên sàn đấu trong môi trường thực tế ảo tham chiếu trên hệ trục tọa độ Oxy. Mỗi đội chơi 
cần đặt 2 con Robot AI tại 2 điểm phân biệt trên đường thẳng y = 2 với tọa độ x là số nguyên 
trong phạm vi từ 0 tới N. Mỗi Robot AI có một mắt thần có nhiệm vụ quan sát đường thẳng 
y = 0. Sàn đấu có hai tấm chắn biên là các đoạn thẳng AB và CD với tọa độ A(0,2), B(0,1), 
C(N, 1), D(N, 2). Ban tổ chức đặt thêm K tấm chắn khác là những đoạn thẳng nằm trên đoạn 
BC. Tấm chắn thứ i trong số K tấm chắn bắt đầu từ điểm (Li, 1) và kết thúc đơ điểm (Ri, 1).
Robot AI tại điểm U trên đường thẳng y = 2 chỉ quan sát được những điểm V trên đường 
thẳng nếu như đoạn thẳng UV không giao với bất kì đoạn thẳng là tấm chắn nào trong 
số K + 2 tấm chắn trên. Một đoạn trên đường thẳng y = 0 gọi là quan sát được nếu như mọi 
điểm trên đoạn thẳng đó (ngoại trừ 2 đầu mút) đều quan sát được. Nhiệm vụ của mỗi đội 
chơi là cần đặt được 2 con Robot AI sao cho tổng độ dài các đoạn quan sát được trên đường 
thẳng y = 0 bởi ít nhất một Robot AI là lớn nhất có thể.
Yêu cầu: Đội tuyển của Tuấn lần đầu tiên tham gia thi tài, hãy giúp đội của Tuấn tìm ra cách 
đặt tối ưu cho 2 con Robot AI.
Dữ liệu
Vào từ file văn bản ROAI.INP:
- Dòng đầu chứa hai số nguyên N và K (1 ≤ N ≤ 109; 1 ≤ K ≤ 2000)
- Dòng thứ i trong số K dòng tiếp theo chứa hai số nguyên Li và Ri (0 ≤ Li < Ri ≤ N)
Dữ liệu bảo đảm L1 < R1 < L2 < R2 <  < LK < RK. Các số trên cùng một dòng cách nhau 
bởi dấu cách
 DeThiTinHoc.net Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án) - DeThiTinHoc.net
Kết quả
Ghi ra file văn bản ROAI.OUT:
- Một số nguyên duy nhất là tổng độ dài các đoạn quan sát được trên đường thẳng y = 0 
trong phương án tối ưu tìm được.
Ví dụ
 ROAI.INP ROAI.OUT
3 1 7
0 1
5 2 8
1 2
3 5
Giải thích
- Trong ví dụ 1, một phương án đặt vị trí tối ưu cho 2 Robot AI là x = 0 và x = 3. Robot AI 
thứ nhất quan sát được đoạn [2,6]; Robot AI thứ hai quan sát được đoạn [-1,3].
- Trong ví dụ 2, một phương án đặt vị trí tối ưu cho 2 Robot AI là x = 2 và x = 4. Robot AI 
thứ nhất quan sát được đoạn [-2,0] và đoạn [2,4]; Robot AI thứ hai quan sát được đoạn [-4,-
2] và đoạn [0,2].
Chấm điểm
- Subtask 1 (16% số điểm): N ≤ 200.
- Subtask 2 (16% số điểm): N ≤ 2000; K ≤ 20.
 DeThiTinHoc.net Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án) - DeThiTinHoc.net
- Subtask 3 (16% số điểm): N ≤ 20000.
- Subtask 4 (20% số điểm): K ≤ 500.
- Subtask 5 (28% số điểm): Không có ràng buộc nào thêm.
Bài 3: Số nguyên dương (6,0 điểm)
Thầy giáo Lê rất yêu thích các bài toán số học và dãy số. Thầy định nghĩa trọng số của một 
số nguyên dương X (ký hiệu là W(X)) như sau:
- Đầu tiên, thầy Lê biểu diễn X thành dãy các chữ số của nó ở hệ cơ số 10, thu được dãy X1, 
X2,, XN với N là số chữ số của X;
- Nếu dãy chữ số của X có chứa hai phần tử đứng cạnh nhau có tổng chia hết cho 5, nghĩa là 
∃i ∈{1, 2,, N – 1} sao cho (Xi + Xi+1) ⋮ 5, thì W(X) = 0;
- Ngược lại, W(X) chính là số lượng dãy con gồm các phần tử liên tiếp trong dãy chữ số của 
X mà có kết quả xor các phần tử bằng 0. Cụ thể, W(X) là số lượng cặp i, j thoả mãn 1 ≤ i ≤ j 
≤ N và Xi ⊕ Xi+1 ⊕  ⊕ Xj = 0, với ⊕ là phép toán xor giữa hai số tự nhiên.
 Nhắc lại, với hai số tự nhiên a và b, phép toán a ⊕ b là phép toán xor từng bit tương ứng 
của a và b trong biểu diễn hệ nhị phân của chúng.
Ví dụ:
- W (1234) = 0 vì chứa hai chữ số 2 và 3 cạnh nhau có tổng chia hết cho 5;
- W (122103) = 5 vì không có hai chữ số nào cạnh nhau có tổng chia hết cho 5, đồng thời 
dãy chữ số của nó có 5 dãy con gồm các phần tử liên tiếp là (2,2), (1,2,2,1), (1,2,2,1,0), (0) 
và (2,1,0,3) có xor các phần tử bằng 0;
- W(3456) = 0 vì dãy chữ số của nó không có dãy con nào có xor các phần tử bằng 0.
Yêu cầu: Cho số nguyên dương k và các số nguyên dương L, H. Hãy tính tổng lũy thừa k 
của trọng số của tất cả các số nguyên dương nằm trong phạm vi [L, H], nghĩa là tính 
 k
∑ =퐿(W(X)) .
Dữ liệu
Vào từ file văn bản PNUM.INP:
- Dòng đầu chứa một số nguyên dương k là số lũy thừa trong tổng cần tính (1 ≤ k ≤ 2).
- Dòng thứ hai chứa một số nguyên dương T là số lượng trường hợp test (1 ≤ T ≤ 50000).
- Mỗi dòng trong số T dòng tiếp theo chứa hai số nguyên dương L và H mô tả một trường 
hợp test (1 ≤ L ≤ H ≤ 101000).
Dữ liệu bảo đảm tổng số chữ số của tất cả các số L và H trong một file dữ liệu vào không 
vượt quá 105. Các số trên cùng một dòng cách nhau bởi dấu cách.
 Kết quả
 Ghi ra file văn bản PNUM.OUT:
- Gồm T dòng, mỗi dòng chứa một số nguyên là phần dư của kết quả tìm được trong phép 
chia cho 1 000 000 007 tương ứng với trường hợp test trong dữ liệu đầu vào.
 DeThiTinHoc.net Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án) - DeThiTinHoc.net
Ví dụ:
 PNUM.INP PNUM.OUT
1 1
3 5
1 10 12
100 105
111239 111245
2 1
3 7
1 10 30
100 105
111239 111245
Giải thích
Trong ví dụ thứ nhất:
- Ở trường hợp test thứ nhất: W(1), W(2), W(3), W(4), W(5), W(6),W(7), W(8), W(9), 
W(10) = 1, nên kết quả là 01 + 01+ 01+ 01+ 01+ 01+ 01+ 01+ 01+ 01 = 1.
- Ở trường hợp test thứ hai: W(100) = 0, W(101) = 2, W(102) = 1, W(103) = 1, W(104) = 1, 
W(105) = 0, nên kết quả là 01 + 21 + 11 + 11 + 11 + 01 = 5.
- Ở trường hợp test thứ ba: W(111239) = 0, W(111240) = 3, W(111241) = 0, W(111242) = 
2, W(111243) = 2, W(111244) = 3, W(111245) = 2, nên kết quả là 01 + 31 + 01 + 21 + 21 + 31 
+ 21 = 12
Trong ví dụ thứ hai:
- Ở trường hợp test thứ nhất: Kết quả là 02 + 02 + 02 + 02 + 02 + 02 + 02 + 02 + 02 + 12 = 1
- Ở trường hợp test thứ hai: Kết quả là 02 + 22 + 12 + 12 + 12 + 02 = 7.
- Ở trường hợp test thứ ba: Kết quả là 02 + 32 + 02 + 22 + 22 + 32 + 22 = 30.
Chấm điểm
- Subtask 1 (12% số điểm): T ≤ 10 và H ≤ 106.
- Subtask 2 (12% số điểm): T ≤ 10 và H ≤ 108 và k = 1.
- Subtask 3 (12% số điểm): H ≤ 1018 và k = 1
- Subtask 4 (12% số điểm): k = 1
- Subtask 5 (20% số điểm): T ≤ 10 và H ≤ 109 và k = 2.
- Subtask 6 (16% số điểm): L là luỹ thừa của 10; H = 10 x L - 1 và k = 2.
- Subtask 7 (16% số điểm): Không có ràng buộc nào thêm.
 ------------HẾT------------
 DeThiTinHoc.net Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án) - DeThiTinHoc.net
 ĐÁP ÁN
Bài 1: Người giao hàng (7,0 điểm)
- Subtask 1 ( 20% số điểm): ,퐾 ≤ 100 và hòn đảo 푖 có cây cầu nối với hòn đảo 푖 +1 
(∀푖:1 ≤ 푖 ≤ ―1).
Hòn đảo 푖 có cây cầu nối với hòn đảo 푖 +1, bài toán tìm giá trị lớn nhất trên đường đi giữa 2 
hòn đảo ,푣 là bài toán tìm giá trị lớn nhất trên đoạn từ đến 푣.
Gọi [푖,푣] là giá trị phần thưởng có thể nhận được nhiều nhất sau nhiệm vụ 푖 và Tuấn đứng ở 
hòn đảo 푣.
Ở mỗi nhiệm vụ 푖,1 ≤ 푖 ≤ 퐾, ta có [푖,푣푖] = max( [푖 ― 1,푣푖], [푖 ― 1, 푖] + max푃 푡ℎ( 푖,푣푖) 
), trong đó maxPath( 푖,푣푖 ) là giá trị lớn nhất trong đoạn từ 푖 đến 푣푖 được xử lý bằng cách 
tìm kiếm tuần tự.
Độ phức tạp: ( 2 × 퐾).
- Subtask 2(20% số điểm): ≤ 10000;퐾 ≤ 100 và hòn đảo 푖 có cây cầu nối với hòn dảo 
푖 +1(∀푖:1 ≤ 푖 ≤ ―1).
Tương tự subtask 1. Thay tìm kiếm tuần tự trong maxPath ( 푖,푣푖) bằng tìm kiếm dựa trên 
Cây phân đoạn hoặc Bảng thưa.
Độ phức tạp: ( × 퐾 × log ).
- Subtask 3 (20% số điểm): Hòn đảo 푖 có cây cầu nối với hòn đảo 푖 +1(∀푖:1 ≤ 푖 ≤ ―1). 
Tương tự subtask 2. Gọi [푣푖] là giá trị phần thưởng có thể nhận được nhiều nhất sau khi 
hoàn thành thực hiện nhiệm vụ và kết thúc ở hòn đảo 푣푖, cập nhật [푣푖] = 
max( [푣푖], [ 푖] + maxPath ( 푖,푣푖)).
Độ phức tạp: ( × log + 퐾).
- Subtask 4 (20% số điểm): ≤ 10000 và 퐾 ≤ 100.
Tương tự subtask 3. Thay tìm kiếm tuần tự trong maxPath ( 푖,푣푖) bằng BFS để tìm đường đi 
và giá trị lớn nhất giữa 2 hòn đảo 푖 và 푣푖 trên cây.
Độ phức tạp: ( × 퐾).
- Subtask 5 ( 20% số điểm): Không có ràng buộc nào thêm.
Tương tự subtask 4. Thay BFS bằng kỹ thuật LCA và Bảng thưa để tính nhanh giá trị max 
trên đường đi giữa 2 hòn đảo và 푣.
Độ phức tạp: (( + 퐾) × log ).
Bài 2: Lập trình Robot AI (7,0 điểm)
- Subtask 1 (16% số điểm): ≤ 200.
 DeThiTinHoc.net Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án) - DeThiTinHoc.net
 ×( 1)
Nhận thấy số lượng phương án của bài toán là . Với mỗi phương án, ta duyệt qua tất 
 2
cả các đoạn đơn vị từ ― tới 2 × để đánh dấu đoạn đơn vị được quan sát.
Độ phức tạp tính toán là ( 3).
- Subtask 2 (16% số điểm): ≤ 2000;퐾 ≤ 20.
Cải tiến từ Subtask 1, thay vì duyệt tất cả các đoạn đơn vị, ta tìm ra danh sách đoạn của mỗi 
Robot. Do danh sách đã được sắp xếp tăng dần, ta có thể gộp các đoạn và tính tổng độ dài 
trong tối đa 2 × 퐾 phép tính.
Độ phức tạp tính toán chung là ( 2 × 퐾).
- Subtask 3 (20% số điểm): ≤ 20000.
Nhận thấy, ta có thể cố định một Robot ở vị trí 0 mà không làm thay đổi lời giải tối ưu do 
tính chất tịnh tiến của bài toán. Tính chất tịnh tiến của bài toán là như sau: Phương án đặt hai 
Robot ở vị trí 1 và 2 sẽ tương đương với phương án đặt hai Robot ở vị trí 1 +Δ và 2 +Δ.
Do đó, số lượng phương án cần duyệt là ( ).
Độ phức tạp tính toán chung là ( × 퐾).
- Subtask 4 (20% số điểm): 퐾 ≤ 500.
Nếu phương án tối ưu không phải là phương án biên (Robot thứ nhất ở vị trí 0, Robot thứ hai 
ở vị trí ). Ta nhận thấy luôn tồn tại phương án tối ưu sao cho có ít nhất một đoạn quan sát 
được của Robot thứ nhất phải có mép (hai đầu mút 퐿푖,푅푖 ) trùng với một đầu mút (퐿푗 hoặc 
푅푗) của đoạn quan sát được của Robot thứ hai. Như vậy, bước đầu tiên, ra tìm ra tất cả 
khoảng cách thỏa mãn điều kiện trên. Số lượng các khoảng cách thỏa mãn là (퐾2). Với 
mỗi khoảng cách cố định, ta làm như subtask 2 để tìm ra độ dài quan sát được trong (퐾).
Độ phức tạp tính toán là (퐾3).
- Subtask 5 (28% số điểm): Không có ràng buộc nào thêm.
Ta xét bài toán tương đương sau:
Cho hai danh sách, danh sách thứ nhất là danh sách các vùng không quan sát được của Robot 
thứ nhất (Robot thứ nhất đặt ở vị trí 0); danh sách thứ hai là danh sách các vùng quan sát 
được của Robot thứ hai. Do danh sách thứ hai là các đoạn không giao nhau nên ta có thể xử 
lý từng đoạn của danh sách thứ hai. Trước hết với mỗi đoạn (푈 +Δ, +Δ), ta đánh dấu được 
 푖 푖
giá trị Δ1 là vị trí bắt đầu giao và Δ2 là vị trí kết thúc giao với đoạn [퐿푖,푅푖] của danh sách thứ 
 푖 푖
nhất. Ngoài ra, ta cũng cần xét Δ3 và Δ4 vị trí bắt đầu và kết thúc của việc hai đoạn lồng vào 
nhau. Ta cần sắp xếp lại các Δ và đưa vào mảng đánh dấu theo thứ tự xuất hiện.
Dùng kỹ thuật mảng cộng dồn và mảng hiệu, ta có thể tịnh tiến qua tất cả Δ. Mỗi lần tịnh tiến 
mất chi phí là (1).
Độ phức tạp tính toán là 퐾2log 퐾 .
Bài 3: Số nguyên dương (6,0 điểm)
 DeThiTinHoc.net Bộ 31 Đề thi HSG Quốc gia THPT môn Tin học (Có đáp án) - DeThiTinHoc.net
- Subtask 1: ≤ 10 và ≤ 106.
Tính trọng số của từng số từ 1 đến 106, sau đó tính tổng hoặc tổng bình phương trọng số các 
đoạn bằng cách sử dụng mảng cộng dồn.
Độ phức tạp: × log2 ( ) + .
- Subtask 2: ≤ 10; ≤ 1018 và = 1.
Đổi thứ tự tính: Xét lần lượt các cập (푖,푗) mà 1 ≤ 푖 ≤ 푗 ≤ 19; sau đó đếm số lượng số trong 
phạm vi [퐿, ] thỏa mãn 푖 ⊕ 푖+1 ⊕  ⊕ 푗 = 0; và không chứa hai chữ số nào cạnh nhau 
có tổng chia hết cho 5 . Bài toán đếm này có thể giải quyết bằng quy hoạch động chữ số, có 
thể cài đặt bằng đệ quy và sử dụng mảng nhớ.
Độ phức tạp: × log3 ( ) , với hằng số thuật toán là 16 × 5 × 10.
- Subtask 3: ≤ 1018 và = 1.
Tương tự subtask 2, nhưng xử lý bài toán đếm chung cho tất cả các trường hợp test; sau đó 
tìm thứ tự từ điển của và 퐿 ―1 trong dãy nghiệm đếm được.
Độ phức tạp phần tiền xử lý: log3 ( ) với hằng số thuật toán là 16 × 5 × 10.
Độ phức tạp phần trả lời các trường hợp test: × log2 ( ) , với hằng số thuật toán là 10 
và là tổng số chữ số của tất cả các số 퐿 và trong các trường hợp test.
- Subtask 4: = 1.
Thay vì xét từng cặp (푖,푗); có thể xét cấu hình nghiệm có dạng bộ hai số ( , ) với 
 = 1, 2,, 푛 là một dãy thập phân và = 1, 2,, 푛 là một dãy nhị phân có các bit 1 kề 
nhau. Các cấu hình cần thoả mãn: không chứa hai chữ số cạnh nhau có tổng chia hết cho 5; 
các bit 1 của đánh dấu các chữ số tương ứng trên sao cho xor của chúng bằng 0. Có thể 
đếm số cấu hình như vậy bằng cách đệ quy xây dựng từng vị trí của cả hai số ( , ) cùng một 
lúc; sau đó sử dụng mảng nhớ để khử trùng lặp các bài toán. Để kiểm soát phạm vi của cho 
từng trường hợp test, có thể sử dụng kỹ thuật tìm thứ tự từ điển của nghiệm như sau: Để đếm 
số cấu hình bé hơn , ta có thể
xét 푖 là vị trí đầu tiên mà 푖 < 푖, và xét hết các khả năng của có thể có tính đến 푖. Mặc dù 
số khả năng của lớn, nhưng giá trị xor của các chữ số tương ứng là bé hơn 16; do đó có thể 
xét các giá trị xor này.
Độ phức tạp phần tiền xử lý: (log ( )) với hằng số thuật toán là 16 × 5 × 20.
Độ phức tạp phần trả lời các trường hợp test: × log2 ( ) , với hằng số thuật toán là 20 
và là tổng số chữ số của tất cả các số 퐿 và trong các trường hợp test.
- Subtask 5: ≤ 10; ≤ 109 và = 2.
Bình phương trọng số của một số = 1, 2,, 푛 chính là số lượng bộ bốn số (푖,푗, ,푡) sao 
cho 1 ≤ 푖 ≤ 푗 ≤ 푛;1 ≤ ≤ 푡 ≤ 푛 và 푖 ⊕ 푖+1 ⊕  ⊕ 푗 = ⊕ +1 ⊕  ⊕ 푡 = 0.
Ý tưởng đổi thứ tự tính, tương tự như subtask 2: Xét tất cả các bộ bốn số (푖,푗, ,푡) và đưa về 
 DeThiTinHoc.net

File đính kèm:

  • docxbo_31_de_thi_hsg_quoc_gia_thpt_mon_tin_hoc_co_dap_an.docx