Tải bản đầy đủ (.pdf) (81 trang)

Tổng hợp đề đề xuất kì thi hsg trại hè hùng vương môn tin khối 10,11 năm 2018 có đáp án

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.32 MB, 81 trang )

TRẠI HÈ HÙNG VƯƠNG
LẦN THỨ XIV
PHÚ THỌ 2018

ĐỀ THI OLYMPIC MÔN TIN HỌC
LỚP 10
Ngày thi: 29 tháng 7 năm 2018
Thời gian làm bài:180 phút
(không kể thời gian giao đề)
(Đề thi có 03trang)

ĐỀ ĐỀ XUẤT CỦA BẮC GIANG: ĐT 01669549287 (Nguyễn Thị Hợp)
TỔNG QUAN ĐỀ THI
Bài
Tên bài
1 Khóa số
2 Phần thưởng
3 Thuê máy

File chương trình File dữ liệu
File kết quả Điểm
PASS.*
PASS.INP
PASS.OUT
6
ASUM.*
ASUM.INP
ASUM.OUT
7
THUEMAY.*
THUEMAY.INP THUEMAY.OUT


7

Dấu * được thay thế bởi PAS hoặc CPP của ngơn ngữ lập trình sử dụng tương ứng là Pascal hoặc C++

Bài 1(6 điểm).Khóa số
Vườn quốc gia Xuân Sơn, tỉnh Phú Thọ nổi tiếng với vẻ
đẹp hoang sơ tự nhiên, có hệ sinh thái phong phú và đa dạng.
Du khách khi tới đây có thể tận mắt chiêm ngưỡng khu rừng
chị trỉ đẹp nhất miền bắc cùng một số lồi thực vật số lượng
lớn như cây rau sắng, dẻ, mộc lan… Ngoài sức hấp dẫn của hệ
động thực vật phong phú, Xn Sơn cịn có nhiều cảnh quan
thiên nhiên kỳ thú thu hút khách du lịch như núi Voi, núi Ten
và núi Cẩn. Cùng với các con suối như suối Lấp, suối Thang; với
nhiều thác nước có độ cao trên 50m. Màu thác bạc hoà quyện
với màu xanh của rừng già làm cho phong cảnh nơi đây vừa
hùng vĩ vừa thơ mộng.
Tại đây, các nhà khảo cổ học đã phát hiện ra một số kho báu bí mậtcủa được các vua
Hùng xây dựng rất kiên cố và không thể phá bỏ. Họ cho rằng trong đó có thể là những khối
tài sản về lịch sử và văn hóa rất có giá trị và họ tìm cách mở cánh cửa của những kho báu
đó.
Trên cửa mỗi kho báu có một bảng gồm 2 hàng, hàng 1 đã ghi sẵn
số nguyên dương N (≤106), hàng 2 chứa 2 khoá số K1 và K2 như hình
bên.

N
K1

K2

Trong khi khảo sát, các nhà khảo cổ đã phát hiện một phiến đá có ghi cách để mở

khố như sau: cửa có bảng chứa số N sẽ tương ứng với K1 và K2 là:
- Điều chỉnh khoá số K1 về số bằng số lượng ước nguyên tố của N;
- Điều chỉnh khoá số K2 về số bằng tổng các ước nguyên tố của N thì cánh cửa sẽ tự
động mở ra và nhà khảo cổ có thể vào bên trong kho báu một cách dễ dàng.


Ví dụ: Ở nhà kho trên cửa ghi số N=12, có các ước của N là 1, 2, 3, 4, 6, 12 chỉ có 2 ước
nguyên tố là 2 và 3 nên K1=2 và K2=5.
Dữ liệu: vào từ filevăn bản PASS.INPchứa duy nhất một số nguyên dương N;
Kết quả: Ghi ra filevăn bản PASS.OUT hai số nguyên K1 và K2.
Ví dụ:
PASS.INP

PASS.OUT

12

2 5

Ràng buộc:
• Có 30% số các test ứng với 30% số điểm của bài có ܰ ≤ 1000;
• Có 40% số test khác ứng với 40% số điểm của bài có ܰ ≤ 10ସ ;
• Có 30% số test cịn lại ứng với 30% số điểm của bài cóܰ ≤ 10଺ .
Bài 2 (7 điểm).Phần thưởng
Phú Ơng có N đồ vật đánh số từ 1 đến N, vật thứ i có giá trị là số nguyên ai. Bờm là
người ln đem lại vui vẻ cho Phú Ơng mỗi khi ông buồn, nên được Phú Ông ban phần
thưởng bằng tổng giá trị các vật liên tiếp từ số hiệu i đến j (1 tiếng keo kiệt, đồ vật được cất kỹ trong kho từ rất lâu, nên có vật rất giá trị (ai>=0) nhưng
cũng có những vật quá hạn sử dụng, hỏng hóc, cũ kỹ… cho không cũng không ai thèm
(ai<0). Như vậy, Bờm có thể nhận được phần thưởng có giá trị âm. Tiếng “lành” đồn xa…

Bởi vậy, Phú Ông muốn cải thiện bản chất của mình nên đã thay đổi sang cách tính
phần thưởng mới bằng trị tuyệt đối của tổng giá trị các vật mà Bờm được chọn từ vật i đến
vật j lớn hơn giá trị S tro trước.
Yêu cầu: Bạn hãy xác định giúp Bờm số lượng C cách lựa chọn phần thưởng thỏa
mãn điều kiện của Phú Ông đưa ra.
Dữ liệu: vàotừ file văn bản ASUM.inp có cấu trúc:
- Dòng 1 chứa 2 số nguyên N và S;
- Dòng 2 chứa N số nguyên ai với i=1,2,…,N
Kết quả:đưa ra file văn bản ASUM.out một số duy nhất C tìm được theo u cầu của
bài tốn.
Ví dụ:
ASUM.inp

ASUM.out
6

44
5 -1 8 -5

Giải thích: Có 4 cách chọn cặp chỉ số thỏa mãn là: [1,1], [3,3], [1,3] và [1,4] với tổng giá
trị tương ứng là 5, 8, 12 và 7.

Ràng buộc:
• Có 30% số test ứng với 30% số điểm của bài có ܰ ≤ 100; ܵ ≤ 1000;
• Có 40% test khác ứng với 40% số điểm của bài có có ݊, ܵ ≤ 10ସ ;

2


• Có 30% test khác ứng với 30% số điểm của bài có có ݊ ≤ 10ହ ; ܵ ≤ 10ହ ;

Bài 3 (7 điểm). Thuê máy
Một cửa hàng có n máy tính cấu hình giống nhau. Cửa hàng cho thuê máy trong thời
gian từ ngày 1 đến ngày 31 trong tháng. Đầu tháng cửa hàng nhận được m đơn đặt hàng từ
m người khách được đánh số từ 1 đến m. Với mỗi đơn đặt hàng cửa hàng có thể đồng ý
hoặc không đồng ý cho thuê máy. Gọi tần số sử dụng trong ngày là số máy cho thuê trong
ngày.
Yêu cầu: Tìm phương án cho thuê để tổng tần số sử dụng là lớn nhất. Biết mỗi khách chỉ
được thuê một máy và thuê những ngày trong tháng.
Dữ liệu:vào từ file văn bản THUEMAY.INP có cấu trúc:
+ Dịng đầu ghi hai số nguyên dương m, n.
+ M dòng tiếp theo, mỗi dịng thứ i ghi thơng tin th máy của khách hàng i, đầu tiên
là tổng số ngày người khách đó muốn thuê, tiếp theo ghi số hiệu các ngày đó.
Kết quả: ghi ra file văn bản THUEMAY.OUT một số nguyên duy nhất là tổng tần số sử dụng
lớn nhất tìm được.
Ví dụ:
THUEMAY.INP

THUEMAY.OUT

3 10

20

513467
11
236
3245
6123456
223
513467

524567
41245
3356
Giải thích: Trong bộ dữ liệu ví dụ thì cửa hàng đồng ý cho các khách hàng có số hiệu
1, 2, 6, 8, 9, 10 thuê máy. Tổng tần số sử dụng bằng 5+1+2++5+4+3=20 là lớn nhất.
Ràng buộc:
• Có 30% số test ứng với 30% số điểm của bài có ܰ = 10; ‫ ≤ ܯ‬40;
• Có 30% test khác ứng với 30% số điểm của bài có có ܰ ≥ ‫;ܯ‬
• Có 40% test khác ứng với 30% số điểm của bài có có ܰ, ‫ ≤ ܯ‬40;
---------------------------HẾT--------------------------Cán bộ coi thi khơng giải thích gì thêm.
Họ và tên thí sinh: ................................................... Số báo danh: .............................

3


MÔN TIN HỌC LỚP 10.
HƯỚNG DẪN CÁCH LÀM (Tham Khảo)
Bài 1: Khóa sơ
Bài này u cầu chỉ đơn giản là xây dựng sàng lọc ra các số nguyên tố nhỏ hơn hoặc bằng
N. Đếm số lượng các số nguyên tố và tính tổng các số ngun tố đó.
Bài 2: Phần thưởng
Giải thuật 1: O(n3)Duyệt mọi dãy con liên tiếp. Tính T là tổng các dãy con liên tiếp từ i đến j.
So sánh |T| với S để cập nhật kết quả.
Giải thuật 2:O(n2)Vận dụng QHĐ vào tính mảng tổng tiền tố SUM[i] = a[1]+…+a[i]. Sau đó dễ
dáng tính được tổng T các phần tử của dãy con liên tiếp từ i đến j với độ phức tạp O(1). So sánh
|T| với S để cập nhật kết quả.
Giải thuật 2: O(nlogn): Vận dụng QHĐ vào tính mảng tổng tiền tố SUM[i] = a[1]+…+a[i]. Sắp
xếp mảng SUM tăng dần. Tìm kiếm nhị phân đề cập nhật kết quả.
Bài 3: Thuê máy.
Thuật toán duyệt và đánh giá nhánh cận, kết hợp tổ chức dữ liệu khá phức tạp.

Subtask 1: Với n=1, chọn khách hàng thuê nhiều ngày nhất để cho thuê.
Subtask 2: Với n>=m, đồng ý cho tất cả các khách hàng thuê, tính tổng tần số của tất cả các
khách hàng.
Subtask 3:Duyệt tất cả các dãy nhị phân độ dài m. Chú ý điều kiện: Tổng số máy cho thuê trong
mỗi ngày đều nhỏ hơn hoặc bằng n để không duyệt các phương án chắc chắn khơng thể là
nghiệm của bài tốn.


TRẠI HÈ HÙNG VƯƠNG LẦN THỨ XIV

ĐỀ THI MÔN TIN HỌCLỚP 10

TRƯỜNG THPT CHUYÊN HÀ GIANG

Thời gian: 180 phút
Ngày thi /07/2018
(Đề thi có 03 trang, gồm 03 câu)

ĐỀ THI ĐỀ XUẤT

TỔNG QUAN ĐỀ THI
Tên bài
SỐ NGUYÊN TỐ
GIẢI PHƯƠNG TRÌNH
CHIA ĐẤT

Tên file

Tên file IN


Tên file OUT

Điểm

SONT.*

SONT.INP

SONT.OUT

6,0

NGHIEMPT.*

NGHIEMPT.INP

NGHIEMPT.OUT

7,0

CHIADAT.*

CHIADAT.INP

CHIADAT.OUT

7,0

Ghi chú: Dấu * tương ứng với phần mở rộng .PAS hoặc .CPP khi học sinh sử dụng ngơn ngữ
lập trình PASCAL hoặc C++.

Bài 1. SỐ NGUYÊN TỐ
Số nguyên tố p là số tự nhiên chỉ có hai ước là 1 và p. Cho số nguyên dương n (n khơng
có q 18 chữ số), nếu tách số n (có k chữ số) ra thành nhiều số theo quy luật: Số đầu tiên có
một chữ số, số thứ hai có hai chữ số, …, số cuối cùng có k chữ số; mỗi số tách ra đều bắt đầu
từ chữ số đầu tiên của số n, sau đó đến lần lượt các số tiếp theo, …
Ví dụ: Số 12345 được tách thành các số 1,12,123,1234 và 12345
Nếu tách một số nguyên dương n như vậy, có bao nhiêu số nguyên tố được tạo thành, các số đó
là những số nào?
Dữ liệu:Vào từ tệp văn bản SONT.INP gồm một số nguyên dương n.
Kết quả:Ghi ra tệp văn bảnSONT.OUT gồm một hai dòng:
+ Dòng thứ nhất là các số nguyên tố được tách ra từ số n, mỗi số cách nhau một dấu cách.
+ Dòng thứ hai là một số nguyên dương chỉ số lượng số nguyên tố đã tách được.
Nếu khơng có số ngun tố nào thì ghi ra số -1
Ví dụ:
SONT.INP

11
1193
1

SONT.OUT

11
1
11 1193
2
-1
1



Bài 2. GIẢI PHƯƠNG TRÌNH
Cho hai số nguyên dương n và k ( 1 < n ≤ 5, k ≤ 16 ) và phương trình x1 + x2 + x3 + ... + xn = k
Yêu cầu: Tìm nghiệm nguyên dương của phương trình, các giá trị xi ( i = 1, 2,3,..., n )
không trùng nhau trong cùng một nghiệm.
Dữ liệu:Vào từ tệp văn bản NGHIEMPT.INP gồm hai số nguyên dương n và k, hai số trên
một dòng và cách nhau một khoảng trắng.
Kết quả:Ghi ra tệp văn bản NGHIEMPT.OUTcác nghiệm của phương trình, được định
dạng như trong ví dụ. Nếu phương trình vơ nghiệm thì ghi ra số -1.
Ví dụ:
NGHIEMPT.INP

25

35

NGHIEMPT.OUT

1.(1;4)
2.(2;3)
3.(3;2)
4.(4;1)
-1

Bài 3. CHIA ĐẤT
Một bác nơng dân có N mảnh đất, các mảnh đất có diện tích lần lượt là ܽ1, ܽ2, … ,ܽN. Sau
khi về già và các con đã trưởng thành bác quyết định chia đất cho 2 người con.
u cầu:Em hãy lập trình giúp bác nơng dân chia đất cho các con sao cho diện tích đất
của hai người con được chia chênh lệch nhau là nhỏ nhất(chia theo đơn vị mảnh đất, không
chia một mảnh ra nhiều mảnh con).Nếu có chênh lệch diện tích thì người em được “ưu tiên”
nhiều hơn.

Dữ liệu:Vào từ file văn bản CHIADAT.INP gồm 2 dòng:
+ Dòng thứ nhất chứa số nguyên dương N (1+ Dịng thứ hai chứa N số nguyên dương ܽ1, ܽ2, … ,ܽN là diện tích của N mảnh đất (0<ܽ1,
ܽ2, … , ܽN≤ 104).
Hai số ghi trên một dòng được ghi cách nhau bởi dấu cách.
Kết quả:Ghi ra file văn bản CHIADAT.OUT gồm 3 dòng:
- Dòng 1: Diện tích đất chênh lệch giữa hai người con.
- Dịng 2: Ghi diện tích các mảnh đất người anh được chia.

2


- Dịng 3: Ghi diện tích các mảnh đất người em được chia.
Hai số ghi trên một dòng được ghi cách nhau bởi dấu cách.
Ví dụ
CHIADAT.INP

CHIADAT.OUT

6
5 8 1 7 65

0
817
565
7
3
10

2

3 10

----------------------- HẾT ----------------------Thí sinh khơng được sử dụng tài liệu, cán bộ coi thi khơng giải thích gì thêm
Họ và tên thí sinh: ....................................

Số báo danh: ...........................................

Họ tên, chữ ký giám thị 1: ........................

Họ tên, chữ ký giám thị 2: ......................

NGƯỜI RA ĐỀ

Nguyễn Công Tĩnh – 0913256001

3


ĐỀ THI ĐỀ XUẤT
TIN HỌC - KHỐI 10-TRẠI HÈ HÙNG VƯƠNG 2018
Giáo viên ra đề: Nguyễn Hồng Thái: 0915771615
Đơn vị: Trường THPT Chuyên Hạ Long tỉnh Quảng Ninh

Tên tệp chương trình
Tên tệp dữ liệu vào
Tên tệp dữ liệu ra
Giới hạn thời gian
Giới hạn bộ nhớ
Điểm


Bài 1
qstring.pas
qstring.cpp
qstring.inp
qstring.out
1 giây/test
1024 MB
7

Bài 2
chess.pas
chess.cpp
chess.inp
chess.out
2 giây/test
1024 MB
7
20

Bài 3
go.pas
go.cpp
go.inp
go.out
1 giây/test
1024 MB
6

Bài 1. Truy vấn trên xâu
Bạn được cho một xâu S, nhiệm vụ của bạn là phải trả lời q truy vấn, mỗi truy vấn được biểu diễn bởi

bộ 4 số nguyên (a, b, c, d). Gọi X là xâu tạo bởi các ký tự liên tiếp từ vị trí ađến b trong xâu S, tương tự
gọi Y là xâu tạo bởi các ký tự liên tiếp từ vị trí cđến d trong xâu S. Vị trí các ký tự trong xâu được đánh
số từ 1 trở đi. Bạn hãy cho biết liệu có tồn tại cách sắp xếp lại các ký tự trong xâu Y sao cho ta thu
được xâu X?
Dữ liệu: Dòng đầu tiên chứa xâu S (1 ≤ độ dài xâu S ≤ 105) chỉ gồm các chữ cái tiếng Anh viết thường.
Dòng thứ hai chứa số nguyên q (1 ≤ q ≤ 105) là số lượng truy vấn. Mỗi dòng trong số q dòng tiếp theo,
chứa 4 số nguyên a, b, c, d (1 ≤ a ≤ b ≤ độ dài xâu S, 1 ≤ c ≤ d ≤ độ dài xâu S) miêu tả một truy vấn.
Kết quả: Với mỗi truy vấn đưa ra xâu “YES” nếu tồn tại cách sắp xếp lại các ký tự trong xâu Y sao
cho ta thu được xâu X và đưa ra xâu “NO” trong trường hợp ngược lại.
Ví dụ:
qstring.inp
kileanimal
2
2 2 7 7
1 4 6 7

qstring.out
YES
NO

Subtasks:
• Subtask 1 (10%): 1 ≤ độ dài xâu S ≤ 102, 1 ≤ q ≤ 102.
• Subtask 2 (20%): 1 ≤ độ dài xâu S ≤ 103, 1 ≤ q ≤ 103.
• Subtask 3 (30%): 1 ≤ độ dài xâu S ≤ 104, 1 ≤ q ≤ 104.
• Subtask 4 (40%): Như ràng buộc gốc.

Bài 2. Cờ vua
Gnouc rất thích chơi cờ vua và đồng thời cậu ấy còn rất thích lập trình. Đó là lý do Gnouc viết một
chương trình máy tính chơi cờ vua. Tuy nhiên trị chơi cờ vua đơn giản trên bàn cờ 8×8 là quá đơn
giản với Gnouc nên cậu ấy muốn sử dụng một bàn cờ vô hạn.


1


Trong lúc lập trình Gnouc gặp phải vấn đề lớn đó là kiểm tra trạng thái “chiếu” trên bàn cờ. “Chiếu”
trong cờ vua là trạng thái mà ở đó quân Vua của một bên đang bị đe dọa bắt mất trong lượt tiếp theo
của đối thủ. Trong bài toán này, để đơn giản ta chỉ xét trạng thái “chiếu” với một quân Vua trắng và
các quân Tượng đen, Xe đen và Hậu đen.
Trong cờ Vua các quân Tượng, Xe, Hậu di chuyển như sau:
• Qn Tượng chỉ có thể đi chéo theo bất kì hướng nào nhưng khơng được phép “nhảy” qua một
qn cờ khác.
• Qn Xe có thể đi dọc hoặc ngang theo hướng bất kì và cũng khơng được phép “nhảy” qua một
quân cờ khác.
• Quân Hậu vừa có thể đi chéo, vừa có thể đi dọc, ngang. Tương tự như 2 quân cờ trên, Hậu cũng
không được “nhảy” qua một quân cờ khác.
Quân Vua gọi là bị chiếu nếu như nó nằm trong phạm vi di chuyển của bất cứ quân Tượng, Xe, Hậu
nào. Bạn hãy giúp Gnouc kiểm tra xem có phải bàn cờ hiện tại đang ở trạng thái “chiếu” hay khơng?
Dữ liệu: Dịng đầu tiên chứa số nguyên T (1 ≤ T ≤ 5) là số lượng bộ dữ liệu. Tiếp theo là T nhóm
dịng, mỗi nhóm dịng có định dạng như sau:
• Dịng đầu tiên chứa số nguyên n (1 ≤ n ≤5×105) là số quân cờ đen (Tượng, Xe, Hậu) trên bàn
cờ.
• Dòng thứ hai chứa 2 số nguyên r0, c0 (-109 ≤ r0, c0 ≤109) miêu tả vị trí hàng, cột của qn Vua
trắng.
• n dịng tiếp theo, mỗi dịng chứa bắt đầu bởi 1 trong 3 chữ cái: ‘B’ tương ứng với quân Tượng,
‘R’ tương ứng với quân Xe, ‘Q’ tương ứng với quân Hậu, tiếp theo là 2 số nguyên r, c (-109 ≤
r, c ≤ 109) miêu tả vị trí hàng, cột của quân cờ trên bàn cờ vơ hạn.
Kết quả: Ghi ra T dịng, mỗi dịng là một thông báo “YES” nếu bàn cờ đang ở trạng thái “chiếu” hoặc
“NO” trong trường hợp ngược lại.
Ví dụ:
chess.inp

2
2
4 2
R 1 1
B 1 5
2
4 2
R 3 3
B 1 5

chess.out
YES
NO

Subtasks:
• Subtask 1 (30%): n ≤ 103, tọa độ của các quân cờ có giá trị tuyệt đối ≤ 103.
• Subtask 2 (30%): n 5ì104.
ã Subtask 3 (40%): Rng buc nh trong đề bài.

Bài 3. Pokémon Go
Pokémon Go hiện đang là một trị chơi được u thích trên tồn thế giới với những tính năng đặc biệt
giúp cho người chơi có thể trải nghiệm thu thập Pokémon trong chính thế giới thực. Trong bài toán này
ta sẽ xét một phiên bản đặc biệt của Pokémon Go.

2


Có n ngơi nhà được đánh số từ 1 đến n. Ngồi ra ta có m Pokémon, Pokémon i sẽ ở trong ngơi nhà có
số thứ tự ai và có giá trị điểm là bi và sẽ biến mất ở thời điểm ti. Dữ liệu đảm bảo rằng ở mỗi ngơi nhà
chỉ có tối đa 1 Pokémon.

Bạn sẽ bắt đầu trị chơi ở ngơi nhà có số thứ tự là k. Để di chuyển giữa 2 ngôi nhà liên tiếp cần thời
gian là 1 giây. Nhiệm vụ của bạn là đi đến các ngôi nhà, bắt Pokémon và thu về số điểm lớn nhất có
thể. Giả sử rằng bạn bắt đầu trò chơi ở thời điểm 0 và việc bắt một Pokémon là tức thời và không mất
thời gian và tất nhiên khi bắt được một Pokémon thì Pokémon đó sẽ biến mất, kể cả bạn bắt nó ở thời
điểm trước thời gian biến mất của Pokémon đó. Lưu ý rằng, do Pokémon i sẽ biến mất vào thời điểm ti
nên bạn cần đến được ngôi nhà chứa Pokémon i tại thời điểm nhỏ hơnti.
Dữ liệu: Dòng đầu tiên chứa 3 số nguyên n, k, m (1 ≤ k ≤ n ≤ 1000, 1 ≤ m ≤ 100) lần lượt là số lượng
ngôi nhà, ngôi nhà bạn xuất phát và số lượng Pokémon trong trò chơi. Mỗi dòng trong m dòng tiếp
theo chứa 3 số nguyên ai, bi, ti (1 ≤ ai ≤ n, 1 ≤ bi ≤ 100, 1 ≤ ti ≤ 2000). Dữ liệu đảm bảo các Pokémon
được liệt kê theo thứ tự tăng dần của chỉ số nhà, tức là aiKết quả: Ghi ra một số nguyên duy nhất là số điểm lớn nhất có thể đạt được.
Ví dụ:
go.inp
10 5 4
1 30 4
3 5 7
7 10 12
9 100 23
20 8 7
1 35 14
4 57 1
6 32 2
9 94 28
14 78 8
15 8 1
17 55 3

go.out
115


172

Ở ví dụ thứ nhất, bạn xuất phát từ ngơi nhà số 5. Đầu tiên bạn sẽ đến ngôi nhà 3 (ở thời điểm 5 - 3 = 2)
bắt Pokémon và thu về 5 điểm. Sau đó bạn đến ngơi nhà 7 (ở thời điểm 2 + (7 - 3) = 6) bắt Pokémon
và thu về 10 điểm. Cuối cùng bạn đến ngôi nhà 9 (ở thời điểm 8) bắt Pokémon và thu về 100 điểm.
Bạn không thể bắt được Pokémon ở ngơi nhà 1 vì thời điểm sớm nhất bạn có thể đến được ngơi nhà
này là thời điểm 4, đúng lúc Pokémon ở ngơi nhà này biến mất.
Subtasks:
• Subtask 1 (30%): m ≤ 10.
• Subtask 2 (30%): m ≤ 20.
• Subtask 3 (40%): Như ràng buộc gốc.
--------------------- Hết ---------------------

3


HƯỚNG DẪN THUẬT TOÁN
ĐỀ THI ĐỀ XUẤT
TIN HỌC - KHỐI 10 - TRẠI HÈ HÙNG VƯƠNG 2018
Giáo viên ra đề: Nguyễn Hồng Thái
Đơn vị: Trường THPT Chuyên Hạ Long tỉnh Quảng Ninh

Bài 1: Truy vấn trên chuỗi.
-

-

Gọi ‫ܿ(݉ݑݏ‬ℎܽ‫ )݅()ݎ‬là số lượng kí tự ܿℎܽ‫ ݎ‬trong đoạn xâu từ 1. . ݅
Như vậy số lượng kí tự ܿℎܽ‫ ݎ‬trong đoạn xâu liên tiếp [a, b] được tính theo cơng thức:
‫ܿ( ݉ݑݏ‬ℎܽ‫ )ܾ()ݎ‬− ‫ܿ(݉ݑݏ‬ℎܽ‫ ܽ()ݎ‬− 1)

Ta thấy rằng, xâu X có thể sắp xếp lại từ xâu Y nếu như số ký tự mỗi loại trong xâu X và xâu Y
là bằng nhau, tức là:
‫ܿ(݉ݑݏ‬ℎܽ‫ )ܾ()ݎ‬− ‫ܿ(݉ݑݏ‬ℎܽ‫ ܽ()ݎ‬− 1) = ‫ܿ(݉ݑݏ‬ℎܽ‫ )݀()ݎ‬− ‫ܿ(݉ݑݏ‬ℎܽ‫ ܿ()ݎ‬− 1)
trong đó char=’a’..’z’.
Để tính mảng ‫ ݉ݑݏ‬ta sử dụng thuật tốn quy hoạch động, cơng thức quy hoạch động:
‫ܿ(݉ݑݏ‬ℎܽ‫ܿ(݉ݑݏ = ) ݅()ݎ‬ℎܽ‫ ݅()ݎ‬− 1) + (ܵ(݅ ) == ܿℎܽ‫)ݎ‬
Khởi tạo: ‫ܿ(݉ݑݏ‬ℎܽ‫()ݎ‬0) = 0.

Bài 2: Cờ vua
-

-

-

Đây là một bài tốn khơng khó, tư tưởng chỉ là xét 8 hướng từ quân Vua, tìm quân cờ gần nhất
ứng với mỗi hướng trong 8 hướng đó.
1

2

3

8

Vua

4

7


6

5

Ta sẽ sử dụng một số nhận xét sau đây để có thể lập trình dễ dàng:
o 2 ô (x, y) và (u, v) nằm trên cùng một hàng nếu x = u.
o 2 ô (x, y) và (u, v) nằm trên cùng một cột nếu y = v.
o 2 ô (x, y) và (u, v) nằm trên cùng một đường chéo chính nếu x – y = u – v.
o 2 ô (x, y) và (u, v) nằm trên cùng một đường chéo phụ nếu x + y = u + v.
Ta sẽ lưu lại vị trí của 8 quân cờ đen như sau:
o Với những quân cờ đen nằm trên cùng một hàng với quân vua trắng, ta lưu lại 2 quân
cờ:
Quân cờ có chỉ số cột lớn nhất mà nhỏ hơn chỉ số cột của quân vua.
Quân cờ có chỉ số cột nhỏ nhất mà lớn hơn chỉ số cột của quân vua.
1
B

2

3
Q

4

5

6

B


K

7

8

9
R

10

11
Q

o Với những quân cờ đen nằm trên cùng một cột với quân vua trắng, ta lưu lại 2 quân cờ:
Quân cờ có chỉ số hàng lớn nhất mà nhỏ hơn chỉ số hàng của quân vua.
Quân cờ có chỉ số hàng nhỏ nhất mà lớn hơn chỉ số hàng của quân vua.
1


o Tương tự như vậy cho đường chéo chính và đường chéo phụ.
B

R
B
Q
K
R
B


R

Q

Q

Bài 3: Pokemon Go
-

Nhận xét: Ta chỉ xét các ngơi nhà có Pokemon, giả sử ta có một mảng X chứa các ngơi nhà có
Pokemon theo thứ tự tăng dần của chỉ số nhà, khi đó tập hợp các ngôi nhà ta đã đến bắt
Pokemon sẽ là một đoạn liên tục trên mảng X. Để thấy rõ điều đó ta xét ví dụ sau:
Giả sử ta có mảng X:
1

3

5

11

14

20

22

29


Mảng này có thể khơng chứa ngơi nhà k (ngơi nhà mà ta xuất phát). Ở bước đầu tiên, ta sẽ chọn
một ngôi nhà để bắt Pokemon từ ngôi nhà k, giả sử ta chọn ngơi nhà 11:
1

3

5

11

14

20

22

29

Do đoạn có 1 phần tử cũng được gọi là một đoạn liên tục trên X nên đến lúc này nhận xét trên
vẫn đúng. Nếu từ ngôi nhà 11, ta đi sang ngôi nhà 14 hoặc ngơi nhà 5 để bắt Pokemon thì rõ
ràng nhận xét của ta vẫn đúng. Bây giờ giả sử ta sẽ đi từ ngôi nhà 11 đến ngôi nhà 22. Rõ ràng
để đến được ngôi nhà 22 ta có thể đi qua các ngơi nhà 14, 20 mà tổng thời gian đi không đổi.
Hơn nữa do thời gian bắt Pokemon là bằng 0, vì vậy khi đến nhà 14 và 20, ta cũng sẽ bắt
Pokemon (nếu có). Như vậy, đoạn các ngôi nhà ta đến bắt Pokemon sẽ là 11, 14, 20, 22, và đây
là một đoạn liên tiếp:
1

3

5


11

14

20

22

29

Hơn nữa ta còn thấy rằng, kết thúc mỗi bước, ta luôn đứng ở một trong hai đầu mút của đoạn
liên tiếp ta vừa đề cập ở trên. Tại mỗi bước ta sẽ chỉ mở rộng đoạn thêm đúng một phần tử về
bên trái hoặc bên phải của dãy đang có.
-

Từ những nhận xét trên ta có sử dụng thuật toán quy hoạch động để giải bài toán trên. Gọi
݂ሾ‫݁݉݅ݐ‬ሿሾ݈݂݁‫ݐ‬ሿሾ‫݃݅ݎ‬ℎ‫ݐ‬ሿሾ݂݈ܽ݃ሿ là số điểm lớn nhất đạt được tại thời điểm‫݁݉݅ݐ‬, đoạn liên tiếp ta
đang có là ሾ݈݂݁‫ݐ‬, ‫݃݅ݎ‬ℎ‫ݐ‬ሿ và biến điều khiển ݂݈ܽ݃ = 0 nếu ta đang đứng ở đầu mút trái, ngược
lại ݂݈ܽ݃ = 1.
Khi đó ta thấy rằng từ đoạn (left, right) ta sẽ chỉ có 2 trường hợp mở rộng là (left-1, right) hoặc
(left, right + 1). Như vậy ta có cơng thức quy hoạch động sau:
݂(‫݃݅ݎ()ݐ݂݈݁()݁݉݅ݐ‬ℎ‫()ݐ‬0) = max ൜

݂(‫ ݁݉݅ݐ‬− ݀݅‫ݏ‬1)(݈݂݁‫ ݐ‬+ 1)(‫݃݅ݎ‬ℎ‫()ݐ‬0) + ‫݌݉݁ݐ‬
݂(‫ ݁݉݅ݐ‬− ݀݅‫ݏ‬2)(݈݂݁‫ ݐ‬+ 1)(‫݃݅ݎ‬ℎ‫()ݐ‬1) + ‫݌݉݁ݐ‬
2


Trong đó


Tương tự ta cũng có:

݀݅‫ݏ‬1 = ܽሾ݈݂݁‫ ݐ‬+ 1ሿ − ܽሾ݈݂݁‫ݐ‬ሿ,
݀݅‫ݏ‬2 = ܽሾ‫݃݅ݎ‬ℎ‫ݐ‬ሿ − ܽሾ݈݂݁‫ݐ‬ሿ
ܾሾ݈݂݁‫ݐ‬ሿ݂݅‫ݐ < ݁݉݅ݐ‬ሾ݈݂݁‫ݐ‬ሿ
‫ = ݌݉݁ݐ‬൜
0݂݅‫ݐ݋‬ℎ݁‫݁ݏ݅ݓݎ‬

݂(‫݃݅ݎ()ݐ݂݈݁()݁݉݅ݐ‬ℎ‫()ݐ‬1) = max ൜
Trong đó

Khởi tạo:

݂(‫ ݁݉݅ݐ‬− ݀݅‫ݏ‬1)(݈݂݁‫݃݅ݎ()ݐ‬ℎ‫ ݐ‬− 1)(0) + ‫݌݉݁ݐ‬
݂(‫ ݁݉݅ݐ‬− ݀݅‫ݏ‬2)(݈݂݁‫݃݅ݎ()ݐ‬ℎ‫ ݐ‬− 1)(1) + ‫݌݉݁ݐ‬

݀݅‫ݏ‬1 = ܽሾ‫݃݅ݎ‬ℎ‫ݐ‬ሿ − ܽሾ݈݂݁‫ݐ‬ሿ,
݀݅‫ݏ‬2 = ܽሾ‫݃݅ݎ‬ℎ‫ݐ‬ሿ − ܽሾ‫݃݅ݎ‬ℎ‫ ݐ‬− 1ሿ
ܾሾ݈݂݁‫ݐ‬ሿ, ݂݅‫ݐ < ݁݉݅ݐ‬ሾ݈݂݁‫ݐ‬ሿ
‫ = ݌݉݁ݐ‬൜
0, ݂݅‫ݐ݋‬ℎ݁‫݁ݏ݅ݓݎ‬
ܾ , ݂݅|ܽ௜ − ݇| < ‫ݐ‬௜
݂(|ܽ௜ − ݇|)(݅)(݅)(0) = ݂(|ܽ௜ − ݇|)(݅)(݅)(1) = ൜ ௜
0, ݂݅‫ݐ݋‬ℎ݁‫݁ݏ݅ݓݎ‬

Kết quả:

‫ = ݐ݈ݑݏ݁ݎ‬max(݂(݅ )(݈݂݁‫݃݅ݎ()ݐ‬ℎ‫()ݐ‬0), ݂(݅ )(݈݂݁‫݃݅ݎ()ݐ‬ℎ‫()ݐ‬1))
với ݅ = 0. . max(‫ݐ‬௜ ) , ݈݂݁‫ = ݐ‬1. . ݉, ‫݃݅ݎ‬ℎ‫ݐ݂݈݁ = ݐ‬. . ݉.

---------------------------- Hết ----------------------------

3


TRẠI HÈ HÙNG VƯƠNG LẦN THỨ XIV
TRƯỜNG THPT CHUYÊN HOÀNG VĂN THỤ
TỈNH HỊA BÌNH

ĐỀ THI MƠN TIN HỌC
KHỐI 10
(Đề này có 3 trang, gồm 3 bài)

ĐỀ THI ĐỀ XUẤT

TỔNG QUAN VỀ BÀI THI
Tên bài

Tệp chương
trình

Tệp dữ liệu vào

Tệp dữ liệu ra

Thời
gian

Điểm


Tên trộm

THIEF.*

THIEF.INP

THIEF.OUT

1 giây

6

Thay thế kí tự

REPLACE.*

REPLACE.INP

REPLACE.OUT

1 giây

7

Ném bóng vào lỗ

HOLES.*

HOLES.INP


HOLES.OUT

1 giây

7

Phần mở rộng của tệp chương trình được đặt tùy theo ngơn ngữ lập trình được sử dụng

Bài 1 - Tên trộm
Ở vương quốc Berland, thời đó, người ta quý nhất là diêm (loại đồ vật tạo ta lửa). Một tên
trộm lẻn vào kho diêm của nhà vua Berland, trong kho có m hịm đựng diêm. Hịm thứ i chứa ai bao
diêm, với mỗi bao diêm trong hịm này có bi que diêm (các bao diêm là giống nhau). Ba lô của tên
trộm chỉ chứa được không quá n bao diêm. Em hãy giúp hắn chọn lấy các bao diêm để số que diêm
hắn lấy được là nhiều nhất có thể. Biết rằng tên trộm khơng có nhiều thời gian để mở các bao diêm.
Dữ liệu:


Dịng đầu chứa hai số ngun n (1≤ n ≤ 2*108) và m (1 ≤ m ≤ 20).



Dịng thứ i trong m dòng sau chứa hai số nguyên aivà bi (1 ≤ ai ≤ 108,1≤ bi ≤10).
Kết quả:
In ra số que diêm tối đa có thể lấy.
Ví dụ:

Input1
7 3
5 10
2 5

3 6

Output1
62

Input2
3 3
1 3
2 2
3 1

Output2
7

Bài 2 - Thay thế ký tự
Cho hai xâu ký tự s và t đều có n ký tự là các chữ cái tiếng Anh in thường. Người ta muốn
thay thế các ký tự trong hai xâu để chúng giống hệt nhau. Với một phép biến đổi, ta có thể thay đổi
một số chữ cái trên 2 xâu. Bạn hãy tính tốn số phép biến đổi tối thiểu để hồn thành việc này.
Chính xác là, Bạn sử dụng các phép biến đổi dạng R(c1, c2) (trong đó c1 và c2 là các chữ cái).
Bạn có thể thực hiện một phép biến đổi nào đó với số lần tùy ý để biến đổi một chữ cái c1 thành
một chữ cái c2 và ngược lại trên cả hai hai xâu s và t. Bạn cần tìm số phép biến đổi tối thiểu để cho
s và t giống hệt nhau. Thêm nữa, bạn cần in ra chi tiết về các phép biến đổi đó. Xem ví dụ để rõ
hơn.
1


Dữ liệu
• Dịng đầu chứa số ngun n (1 ≤ n ≤ 105) là độ dài các xâu ký tự.
• Dịng thứ hai chứa n chữ cái tiếng Anh in thường, mô tả xâu s.
• Dịng thứ ba chứa n chữ cái tiếng Anh in thường, mơ tả xâu t.

Kết quả
• Dịng đầu in ra số nguyên k là tổng số phép biến đổi tối thiếu cần thực hiện
• Trong k dịng tiếp theo, mỗi dòng in ra một cặp ký tự c1, c2 cách nhau một dấu cách để mô tả về
một phép biến đổi. Các cặp này có thể in theo trật tự bất kỳ. Chú ý, các phép biến đổi có thể
khơng phải duy nhất.
Ví dụ
Input1
3
abb
dad

Output1
2
a d
b a

Input2
8
drpepper
cocacola

Output2
7
l e
e d
d c
c p
p o
o r
r a


Giải thích ví dụ 1:
Trong ví dụ 1, bạn có thể dùng 2 phép biến đổi: ('a', 'd') và ('b', 'a'). Như vậy các chữ cái đầu
sẽ trùng khớp khi ta sẽ thay thế chữ 'a' bằng 'd'. Các chữ cái thứ hai sẽ trùng khớp khi ta thay 'b'
bằng 'a'. Các ký tự thứ ba sẽ trùng khớp khi ta thay thế 'b' bằng 'a' và 'a' bằng 'd'.

Bài 3 - Ném bóng vào lỗ
Trị chơi "Holes" dành cho một người với các quy tắc sau đây:
Có dãy N lỗ nằm trên một hàng và được đánh số từ trái sang phải từ 1 đến N. Mỗi lỗ có năng
lượng riêng, lỗ thứ i có năng lượng ai. Nếu bạn ném một quả bóng vào lỗ i,quả bóng sẽ nảy đến lỗ i
+ ai, sau đó nó sẽ nảy tiếp với quy luật tương tự. Nếu khơng có lỗ với số hiệu như vậy, quả bóng sẽ
nảy ra khỏi hàng. Với mỗi thao tác trong Mthao tác, người chơi có thể thực hiện một trong hai hành
động sau:


Gán năng lượngcho lỗ a với giá trị b.



Ném một quả bóng vào lỗ avà đếm số bước nảy của quả bóng trước khi nó nảy ra khỏi hàng
và viết số hiệu lỗ mà từ đó bóng nảy ra khỏi hàng.
Bạn phải thực hiện tất cả các tính tốn theo u cầu.
Dữ liệu



Dịng đầu chứa hai số ngun N và M (1 ≤ N ≤ 105, 1 ≤ M ≤ 105) lần lượt là số lượng lỗ trong
hàng và số lần chơi.




Dịng thứ hai chứa N số ngun dương không quá N, làgiá trị năng lượng ban đầu của các lỗ



M dịng sau mơ tả các thao tác. Mỗi dòng là một trong hai loại thao tác:
Loại 0: 0 a b
Loại 1: 1 a
2


Trong đó, loại 0 có nghĩa là cần gánnăng lượng của lỗ a bằng b, và loại 1 có nghĩa là ném một
quả bóng vào lỗ a. Các số a và b là nguyên dương không vượt quá N.
Kết quả
Với mỗi thao tác loại 1, in ra một dòng chứa hai số tách biệt bởi dấu cách, lần lượt là số hiệu
lỗ cuối cùng quả bóng nảy đến trước khi rời khỏi hàng và số bước nhảy của bóng.
Input
8 5
1 1 1 1 1 2 8 2
1 1
0 1 3
1 1
0 3 4
1 2

Output
8 7
8 5
7 3


--- Hết ---

3


ĐÁP ÁN VÀ BIỂU ĐIỂM
Bài 1: Tên trộm (6 điểm)
Thuật toán tham lam.

Bài 2: Thay thế ký tự (7 điểm)
Sử dụng cấu trúc DSU

Bài 3: Ném bóng vào lỗ(7 điểm)
Chia dãy thành các khối có độ dài K = sqrt(N)lỗ liên tiếp.
Với mỗi lỗ i, ta duy trì các thơng tin:


Năng lượng của lỗ :power[i],



Số hiệu lỗ đầu tiên thuộc khối khác và bóng có thể nảy đến được từ lỗ i bằng một dãy các
bước nhảy, ta gọi nó là next[i].



Số lượng bước nhảy cần thiết để bóng từ lỗ i đến lỗ next[i], ta gọi nó là count[i]. Thêm một
lỗ giả N+1 nằm sau lỗ N và nó thuộc về một khối riêng.

Để trả lời truy vấn loại 1 (khi bóng được ném), bóng sẽ nảy từ lỗ i đến lỗ next[i] và cứ như

vậy cho đến khi nó đến lỗ N+1. Mỗi lần ta tăng count[i] cho câu trả lời. Bóng sẽ nảy khơng q
N/K lần.
Để duy trì truy vấn loại 0 (năng lượng của lỗ i được thay đổi), ta thay đổi power[i], next[i] và
count[i]. Sau đó,với mỗi lỗ cùng khối với lỗ i và có số hiệu nhỏ hơn i,ta cập nhật next[i] và
power[i] theo thứ tự giảm dần của số hiệu các lỗ. Số lần thực hiện không quá K cập nhật.
Độ phức tạp thuật toán là O(Nsqrt(N)).

4


TRƯỜNG THPT CHUYÊN
HƯNG YÊN

ĐỀ THI ĐỀ XUẤT MÔN TIN HỌC
LỚP 10
Ngày thi: 29 tháng 7 năm 2018
Thời gian làm bài:180 phút
(khơng kể thời gian giao đề)
(Đề thi có 03trang)

TỔNG QUAN ĐỀ THI
Bài
Tên bài
File chương trình File dữ liệu
File kết quả Điểm
1 Đoạn con tổng 0
SUMSEQ0.*
SUMSEQ0.INP SUMSEQ0.OUT
6
2 Cắt hàng

CUTLINE.*
CUTLINE.INP CUTLINE.OUT
7
3 Làm việc tập thể
WORKING.*
WORKING.INP WORKING.OUT
7
Dấu * được thay thế bởi PAS hoặc CPP của ngơn ngữ lập trình sử dụng tương ứng là
Pascal hoặc C++
Bài 1(6 điểm).Đoạn con tổng 0.
Cho một dãy số nguyên n phần tử A1, A2, A3,…, An. Một đoạn con liên tiếp của dãy A có
điểm đầu L, điểm cuối R (L≤R) là tập hợp tất cả các phần tử Ai với (L ≤ i ≤R). Đếm số
đoạn con có tổng tất cả các phần tử bằng 0.
Dữ liệu vào: Vào từ file SUMSEQ0.INP
• Dịng đầu là số tự nhiên N
• Dịng thứ 2 là N số nguyên A1, A2, A3,…, An. ( |Ai| ≤ 109)
Dữ liệu ra: file SUMSEQ0.OUT – ghi số lượng đoạn con tìm được.
SUMSEQ0.INP

SUMSEQ0.OUT

5

4

2 1 -1 -2 0
Ràng buộc:
• Có 60% số test có ݊ ≤ 5000
• Có 40% số test cịn lại có ݊ ≤ 10ହ .


Bài 2 (7 điểm).Cắt hàng
Cho một ma trận gồm ݉ hàng và ݊cột (2 ≤ ݉, ݊ ≤ 10ଷ ). Mỗi phần tử của ma trận là
một chữ cái la tinh thường. Các cột của ma trận khác nhau từng đơi một. Hãy tìm cách
xóa nhiều nhất có thể các hàng đầu tiên của ma trận, sao cho phần còn lại vẫn đảm bảo
các cột khác nhau từng đôi một.

1


Yêu cầu: Cho ݉, ݊ và ma trận các ký tự. Hãy xác định số dịng tối đa có thể xóa được từ
đầu ma trận.
Dữ liệu: Vào từ file văn bản CUTLINE.INP:
• Dịng đầu tiên chứa 2 số ngun ݉ và ݊,
• Dịng thứ ݅ trong ݉dịng sau chứa xâu độ dài ݊, tương ứng với dòng thứ ݅ của ma
trận.
Kết quả: Đưa ra file văn bản CUTLINE.OUT một số ngun – số dịng tối đa có thể xóa
được từ đầu ma trận.
Ví dụ:
CUTLINE.INP

CUTLINE.OUT

55

2

alpha
tonny
space
betaa

mamaa

Ràng buộc:
-

Có 60% số test có ݉, ݊ ≤ 100

Bài 3 (7 điểm). Làm việc tập thể
Trong cơng ty X có N nhân viên rất xuất sắc. Tuy nhiên do tất cả đều quá giỏi và
quá tự tin, cứ khi nào 2 nhân viên cùng làm việc với nhau thì hiệu suất gần như bằng 0.
Họ tốn thời gian vào việc tranh cãi và không quyết định được cơng việc gì. Mỗi nhân
viên có giờ làm việc là một khoảng thời gian liên tiếp từ thời điểm ܽ௜ đến thời điểm ܾ௜ .
Giờ làm việc của mỗi nhân viên là không thể thay đổi do đặc điểm cơng việc mà họ đảm
trách và tính kỳ quặc của họ. Do các khoảng thời gian này không giống nhau hồn tồn,
có thể có những lúc chỉ có một nhân viên làm việc. Lúc này thì họ làm việc rất hiệu quả.
Giám đốc muốn giữ lại một số nhân viên sao cho tổng thời gian làm việc hiệu quả là lớn
nhất có thể.
Dữ liệu: Vào từ file văn bản WORKING.INP
• Dòng đầu tiên ghi ݊ là số nhân viên (1 ≤ ݊ ≤ 10ହ )
• N dịng tiếp theo mỗi dòng ghi hai số ܽ௜ và ܾ௜ là thời điểm bắt đầu và kết thúc giờ
làm việc của nhân viên ݅ (0 ≤ ܽ௜ ≤ ܾ௜ ≤ 10ଽ )

2


Kết quả: Ghi ra file văn bản WORKINGOUT một số nguyên duy nhất là tổng thời gian
làm việc hiệu quả lớn nhất có thể.
Ví dụ:
WORKING.INP


WORKING.OUT

7

1900

100 150
0 1000
900 1000
1800 2000
900 1800
272 314
1900 2000

Ghi chú: Các nhân viên được giữ lại là 2, 4 và 5
Ràng buộc:
- 60% số test có ݊ ≤ 10ସ
---------------------------HẾT--------------------------Cán bộ coi thi khơng giải thích gì thêm.
Họ và tên thí sinh: ................................................... Số báo danh:.............................

3


Bài 1. Sử dụng tìm kiếm nhị phân hoặc dùng Map trong C++.
Bài 2. Gọi ܾ௜ là độ giống nhau lớn nhất từ đáy trở lên của cột ݅ và cột ݅ + 1. Kết quả là 1 + max ܾ௜ với
1≤݅<݊
Bài 3. Quy hoạch động.
Sắp xếp dãy tăng dần theo ܾ௜ . Gọi ݂௜ là tổng thời gian hiệu quả nếu người cuối cùng thực hiện là ݅.
Với mỗi đoạn [ܽ௜ , ܾ௜ ] ta cần tìm vị trí đoạn ݆ cuối cùng sao cho ܾ௝ ≤ ܽ௜ . Với các đoạn 1 … ݆ ghép trực tiếp
với đoạn ݆ mà khơng có xung đột nên ta chọn giá trị lớn nhất. Với các đoạn [݆ + 1, … ݅ − 1] ta có cơng

thức:
݂௜ = ݂௞ − 2ܾ௞ + ܾ௜ + ܽ௜
Đặt ݃௞ = ݂௞ − 2ܾ௞ . Ta tìm max ݃௞ với ݇ ∈ [݆ + 1 … ݅ − 1]. Sử dụng Interval tree. Hoặc có thể dùng ܴ‫ܳܯ‬
vì mỗi điểm ta cập nhật 1 lần và cập nhật từ trái qua phải.


ĐỀ THI CHỌN HỌC SINH GIỎI

SỞ GD&ĐT LÀO CAI
TRƯỜNG THPT CHUYÊN
LÀO CAI
---------------------

TRẠI HÈ HÙNG VƯƠNG LẦN THỨ XIV
NĂM HỌC 2017 - 2018
Môn: TIN HỌC 10
(Thời gian làm bài: 180 phút)
-----------------------------------------------------------------

ĐỀ THI ĐỀ XUẤT

TỔNG QUAN BÀI THI
Bài

Tên bài

Tên chương
trình

Dữ liệu vào


Dữ liệu ra

Điểm

1

PLANES

PLANES.*

PLANES.INP

PLANES.OUT

6

2

ADVERTISEMENT

AD.*

AD.INP

AD.OUT

7

3


TREE

TREE.*

TREE.INP

TREE.OUT

7

Lập trình giải các bài tốn sau:
BÀI 1. PLANES (6 điểm)
Những ngày này Arkady hoạt động như một bộ điều khiển giao thông hàng không tại một
sân bay lớn. Anh ta điều khiển một đường băng thường chỉ được sử dụng để hạ cánh. Vì vậy,
anh ta có một lịch trình của máy bay được hạ cánh trong tương lai gần nhất, mỗi lần hạ cánh
kéo dài 1 phút.
Arkady được yêu cầu chèn một cất cánh trong lịch trình. Việc cất cánh mất 1 phút, nhưng vì
lý do an tồn cần có khoảng cách giữa thời gian cất cánh và hạ cánh ít nhất là s phút từ cả hai
phía.
Tìm thời gian sớm nhất khi Arkady có thể chèn chuyến bay cất cánh.
Đầu vào:
Dòng đầu tiên chứa hai số nguyên n và s (1≤ n≤100, 1≤s≤60) - số lần hạ cánh theo lịch
trình và thời gian tối thiểu cho phép (tính bằng phút) giữa lượt hạ cánh và cất cánh.
N dòng tiếp theo chứa hai số nguyên h và m (0≤h≤23, 0≤m≤59) – Thời gian tính bằng giờ và
phút khi máy bay hạ cánh, bắt đầu từ thời điểm hiện tại (thời gian hiện tại là 00, được đưa ra
theo thứ tự tăng dần.
Đầu ra:
In ra 2 số nguyên h và m , giờ và phút từ thời điểm hiện tại của thời gian sớm nhất để Arkady
có thể chèn chuyến bay cất cánh vào đó.

PLANES.INP
6 60
00
1 20
3 21
50
19 30

PLANES.OUT
61

Trang

1


23 40
BÀI 2: ADVERTISEMENT (7 điểm)
Hoàng là một người sinh ra và lớn lên tại vùng đất xa xôi, một lần được ra thành phố
cùng bố, Hoàng cảm thấy rất ngạc nhiên và khơng hiểu vì sao ngồi đường lại xuất hiện
nhiều biển chữ chạy và trên các biển đó lại xuất hiện chữ to, nhỏ khác nhau như thế. Từ đó
cậu bé ấp ủ hi vọng lớn lên sẽ mở một cửa hàng quảng cáo cho riêng mình, đến 18 tuổi
Hoàng được nhận vào một cửa hàng quảng cáo uy tín, cơng việc đầu tiên được giao là bố trí
thơng tin cho một trang quảng cáo bằng corel. Trang quảng cáo đó hình chữ nhật kích thước
w x h. Nội dung quảng cáo có n từ. Khi in trong font chuẩn từ thứ i có độ dài ai và độ cao bi.
Các từ phải ghi theo đúng trình tự từ trên xuống dưới và từ trái qua phải. Người ta muốn chữ
phải ghi càng to càng tốt (nhưng vẫn phải nằm trong trang quảng cáo ). Các chữ đều phải
được phóng to (hoặc thu nhỏ) theo cùng một tỷ lệ Như vậy, từ thứ sẽ chiếm một diện tích
. Nếu một dịng có nhiều từ thì các từ này phải được in với cùng một


độ cao.
Yêu cầu: Hãy xác định hệ số tỷ lệ

lớn nhất có thể chọn.

Dữ liệu: Vào từ file văn bản AD.inp:
• Dịng đầu tiên chứa 3 số ngun
• Dịng thứ trong



dịng sau chứa 2 số nguyên

Kết quả: Đưa ra file văn bản AD.out một số thực



.

với độ chính xác 10-10.

Ví dụ:
AD.inp
1 10 100
100 10

AD.out
0.0999999046

Ràng buộc:

• Có 30% test có n ≤ 100;
• Có 30% test tiếp theo có n ≤ 1000;
• Có 40% test tiếp theo có n ≤ 105.
Bài 3. Trồng cây (7đ)
Chuẩn bị vào năm học mới 2018-2019, Đoàn thanh niên Trường THPT Chuyên Hùng Vương có giao
cho các lớp chăm sóc N ( 3 ≤ N ≤ 3000 ) cây xanh trong trường được đánh số từ 1 đến N. Biết cây
thứ i có chiều cao Si (1 ≤ Si ≤ 109 ) và chi phí chăm sóc các cây tương ứng là Ci (1 ≤ Ci ≤ 108 ) .
Trong buổi phân cơng lao động của lớp 10 Tốn – Tin, Lớp trưởng đố các bạn hãy chọn ra 3 cây theo
thứ tự i

Đầu vào: Dịng đầu tiên số N, dịng thứ 2 chứa N số là độ cao cây theo thứ tự, dòng thứ 3
là N số ghi lại chi phí chăm sóc cây tương ứng.



Đầu ra: Ghi ra 1 số là chi phí chăm sóc cây nhỏ nhất; nếu khơng tồn tại thì ghi -1

Ví dụ:
Trang

2


TREE.INP

TREE.OUT

5
9

2 4 5 4 10
43214
3
-1
100 101 100
245
10
33
1 2 3 4 5 6 7 8 9 10
10 13 11 14 15 12 13 13 18 13
• Sub 1: 30% số test có N<=300
• Sub 2: 30% số test tiếp theo có N<=1000
• Sub 3: 40 % số test cuối cùng có N<=3000

------------HẾT-----------

Trang

3


Ý tưởng giải thuật
Bài 1: Thuật toán
Bài toán trên dễ dàng giải quyết đây là bài dạng cơ bản, nhận thấy muốn chèn chuyến
bay cất cánh đầu tiên vào lịch trình các chuyến bay đang hạ cánh tính từ thời điểm hiện tại ta
chỉ cần quy đổi tất cả thời gian ra đơn vị phút.
Và đi so sánh thời gian (s) thời gian quy định an toàn cho chuyến bay cất cánh và hạ cánh với
x (x=h*60+m)
Nếu ans+s

break

Ngược lại ans = x+s+1.
Kết quả cần tìm

cout<
Độ phức tạp bài toán O(n)
Bài 2: Thuật toán.
-

Nhập theo yêu cầu bài toán

-

Viết hàm kiểm tra điều kiện k thỏa mãn đầu bài:
+> Kiểm tra nếu b[i] == b[i-1] và và chiều rộng trang thiết kế (sw)>=k*a[i];
Sw=sw-k*a[i];
Else sh(chiều dài)= sh+k*b[i];
Sw=w-k*a[i];

-

Chặt nhị phận để tìm ra k lớn nhất.

-

Với đầu=0, cuối = w/doule(maxh) ; maxh=max(maxh,a[i]).
(các biến nhập theo đầu bài)


Bài 3: Thuật toán: Duyệt kết hợp với QHD để giải quyết bài toán.