You are on page 1of 6

HỘI CÁC TRƯỜNG THPT CHUYÊN ĐỀ THI CHỌN HỌC SINH GIỎI LẦN THỨ XII

KHU VỰC DUYÊN HẢI, ĐỒNG BẰNG BẮC BỘ MÔN THI: TIN HỌC – KHỐI 10
TRƯỜNG THPT CHUYÊN BIÊN HOÀ, T. HÀ NAM Ngày thi 21/04/2019
Thời gian làm bài 180 phút
ĐỀ THI ĐỀ XUẤT (Đề này có 3 câu; gồm 04 trang)

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 Điểm
Dãy Xâu SEQSTR.* SEQSTR.INP SEQSTR.OUT 6

Du Lịch Tam Chúc TRAVELTC.* TRAVELTC.INP TRAVELTC.OUT 7

Cụm Dân Cư GNB.* GNB.INP GNB.OUT 7

Phần mở rộng của tệp chương trình được đặt theo ngôn ngữ lập trình được sử dụng.
Bài 1. DÃY XÂU (6 điểm)
Cho một dãy gồm n xâu s1,s2,…, sn và một số nguyên dương k. Một cặp hai xâu
si và sj trong dãy được gọi là tương thích với nhau nếu thỏa mãn:
- 0 < j-i ≤ k
- Hai xâu si và sj có cùng độ dài.
Yêu cầu: Hãy xác định số cặp các xâu tương thích với nhau trong dãy các xâu đã cho.
Dữ liệu: Vào từ file văn bản SEQSTR.INP
- Dòng đầu chứa hai số nguyên n và k (3 ≤ n ≤ 300.000; 1 ≤ k ≤ n).
- N dòng tiếp theo mỗi dòng chứa một xâu có độ dài từ 2 đến 20 kí tự gồm các
chữ cái tiếng Anh in hoa.
Kết quả: Ghi ra file SEQSTR.OUT một dòng duy nhất là kết quả của bài toán.
Ví dụ:

SEQSTR.INP SEQSTR.OUT

42 5
OTN
ABC
THA
HUN

63 2
CFETHIA
LLOYD
STEVIE
KEVIN
MALCABC
DABNEY

Ràng buộc:
- Có 40% số điểm ứng với n ≤ 5000
- Có 60% số điểm ứng với n ≤ 300.000.
Bài 2. Du Lịch Tam Chúc ( 7 điểm)
Khu du lịch Tam Chúc (Ba Sao Hà Nam) được mệnh danh là “Vịnh Hạ Long
trên cạn”, nơi khoác lên mình vẻ đẹp ngút ngàn và đẹp như cõi mộng, nơi mà du
khách sẽ cảm nhận được sự thuần khiết, thanh bình và yên ả. Quanh khu du lịch có rất
nhiều địa điểm có thể khám phá như: Chùa Ngọc, Điện Tam Thế, Điện Pháp Chủ,
Điện Quan Âm, Cổng Tam Quan, Phòng họp Quốc tế,… Giả sử có N điểm du lịch, tại
một điểm bất kì có thể đi đến 2 địa điểm khác theo hướng trái (L) hoặc hướng phải
(R). Một tour du lịch cho khách sẽ xuất phát từ điểm 1, đi theo M chỉ dẫn chỉ gồm các
ký tự 'L' và 'R'. Bé Bông lần đầu được đi du lịch ở Tam Chúc nên rất thích, mỗi tour
du lịch bé muốn khám phá K lần. Vậy bạn hãy giúp mẹ bé tìm ra điểm dừng cuối cùng
theo lộ trình bé Bông đã đi
Dữ liệu: Vào từ file văn bản TREVALTC.INP
 Dòng đầu tiên ghi ba số nguyên dương N, M và K (N ≤ 10 3, M ≤ 5*102, K ≤
109)
 N dòng tiếp theo, mỗi dòng ghi hai số nguyên là số hiệu của điểm tiếp theo nếu
xuất phát từ điểm i đi theo hướng trái hoặc hướng phải.
 Dòng cuối cùng chứa M ký tự cách nhau bởi dấu trống chỉ gồm hai ký tự 'L' và
'R' là các chỉ dẫn của tour du lịch
Kết quả: Ghi ra file văn bản TRAVELTC.OUT một số nguyên duy nhất là số hiệu
của điểm dừng cuối cùng.
Ví dụ:

TRAVELTC.INP TRAVELTC.OUT TRAVELTC.INP TRAVELTC.OUT

433 4 433 2
24 24
31 31
42 42
13 13
LLR LRR

Ràng buộc:
 Có 20% số test ứng với 20% số điểm của bài có K ≤ 102.
 Có 40% số test ứng với 40% số điểm của bài có K ≤ 105;
 Có 40% số test ứng với 40% số điểm của bài có K ≤ 109.

Bài 3. Cụm Dân Cư (7 điểm)


Vương quốc Ba Sao tươi đẹp, người dân hiền lành chăm chỉ làm ăn. Tại đây có
N ngôi làng nằm dọc theo đường quốc lộ, mỗi ngôi làng đều dự trữ một lượng lương
thực nhất định cho làng của mình . Làng thứ i có số lương thực dự trữ là a i. Các làng
liên tiếp có thể kết nghĩa với nhau thành một cụm dân cư nếu có lượng lương thực
trung bình cộng lớn hơn hoặc bằng P.
Yêu cầu: Hãy xác định số cụm dân cư khác nhau có thể hình thành trong vương quốc
Dữ liệu vào: GROUP.INP

- Dòng đầu chứa số nguyên

- Dòng hai chứa số nguyên , )

- Dòng cuối chứa một số nguyên dương ).

Dữ liệu ra: GROUP.OUT


- Ghi một số nguyên không âm duy nhất là kết quả tìm được.
Ví dụ:

GROUP.INP GROUP.OUT

3 5
132
2

Giải thích: Trong ví dụ trên, có 5 dãy con liên tiếp thỏa mãn là: [1, 2], [1,3], [2,2],
[2,3], [3,3].
Ràng Buộc:
 30% tổng số test có

 30% tổng số test tiếp theo có

 40% tổng số test còn lại có

==== Hết ====

Ghi chú: 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ọ và tên giám thị số 1: ......................................................... Chữ ký: ..............................


Họ và tên giám thị số 1: ......................................................... Chữ ký: ..............................

Họ tên người ra đề: Bùi Thu Hường Điện thoại: 0977277911


Chữ ký của người ra đề: ...............................................................................................
HỘI CÁC TRƯỜNG THPT CHUYÊN KỲ THI CHỌN HỌC SINH GIỎI LẦN THỨ XII
KHU VỰC DUYÊN HẢI, ĐỒNG BẰNG BẮC BỘ MÔN THI: TIN HỌC – KHỐI 10
Ngày thi 21/04/2019
(Hướng dẫn chấm này gồm có 02 trang)

HƯỚNG DẪN CHẤM ĐỀ THI ĐỀ XUẤT

Hướng dẫn thuật toán


Bài 1. Dãy Xâu
Dễ thấy nội dung cụ thể của các xâu ký tự không quan trọng. Ta chỉ quan tâm
đến độ dài của các xâu. Gọi là độ dài các xâu ta có thể phát
biểu lại bài toán là đếm xem có bao nhiêu cặp số giống nhau có chênh lệch chỉ số
không vượt quá .
Sub 1: Thuật toán đơn giản là sử dụng hai vòng lặp để đếm.
Sub 2: Với mỗi chỉ số ta đếm xem có bao nhiêu phần tử giống có chỉ số
trong đoạn có giá trị bằng .
Để làm điều này trong C++ ta sử dụng cấu trúc map<int,int> nho;
Mỗi lần xét đến :
if (i-k>0) nho[a[i-k]]--;
res += nho[a[i]];
nho[a[i]]++;
Đối với Pascal công việc khó khăn hơn. Trước tiên ta "nén" dữ liệu sao cho .
Khi đó việc nhớ số lượng các giá trị có thể sử dụng mảng thay vì sử dụng map.

Bài 2. Du Lịch Tam Chúc

Thuật toán đơn giản là thực hiện theo đúng mô tả đề bài.


Để có thuật toán tốt hơn ta xây dựng mảng x[1], x[2], ...., x[n] trong đó x[i] là vị trí
cuối cùng khi đi một lần chỉ dẫn với đỉnh đầu là i
Từ kết quả trên ta cần thực hiện K lần

Có thể thấy dãy trên có chu kỳ nên từ đó có thể tính đến vị trí cuối với k tùy ý.

Bài 3. Cụm Dân Cư


Sub 1: Duyệt trâu, độ phức tạp O(n3)
Sub 2:
- Đặt a[i]=a[i]-P
- Tính tổng dồn S[i]=S[i-1]+a[i]
Bài toán trở thành: Đếm số cặp (I,j) sao cho j>i=I và S[j]-S[i-1]>=0
Duyệt 2 vòng for cho I và j: Độ phức tạp O(n2).
Sub 3: Từ sub 2, với mỗi j, đếm số số I <=j sao cho S[j]>=S[i-1].
Vì các S[j] có thể âm, gọi Q=max(S[i], i=1..n}
S[i]:=S[i]+Q (đảm bảo S[i]>=0 với mọi i) hoặc rời rạc hóa mảng A trước khi tính tổng
dồn
Dùng cây BIT để tính: với mỗi j, đếm số số I <=j sao cho S[j]>=S[i-1].
Độ phức tạp O(nlogn).

==== Hết ====

You might also like