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à t
Trang 1(Đề 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
3 Thuê máy 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ố loà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ú, Xuân 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 (≤10 6 ), hàng 2 chứa 2 khoá số K1 và K2 như hình
- Đ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
ĐỀ ĐỀ XUẤT CỦA BẮC GIANG: ĐT 01669549287 (Nguyễn Thị Hợp)
Trang 22
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ụ:
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 a i Bờm là người luôn đ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 <i <j, i, j= 1 N) Phú Ông nổi 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ị (a i >=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 (a i <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 a i 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 yêu cầu của
Trang 33
; ≤ 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 thuê 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
• 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:
Trang 4MÔ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 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ố nguyên 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 toán
Trang 51
TRẠI HÈ HÙNG VƯƠNG LẦN THỨ XIV
TRƯỜNG THPT CHUYÊN HÀ GIANG
ĐỀ THI ĐỀ XUẤT
ĐỀ THI MÔN TIN HỌCLỚP 10
Thời gian: 180 phút Ngày thi /07/2018
(Đề thi có 03 trang, gồm 03 câu)
TỔNG QUAN ĐỀ THI
GIẢI PHƯƠNG TRÌNH NGHIEMPT.* NGHIEMPT.INP NGHIEMPT.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ó quá 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ố nguyên tố nào thì ghi ra số -1
Trang 62
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+ +x n =k
Yêu cầu: Tìm nghiệm nguyên dương của phương trình, các giá trị x i (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ụ:
2.(2;3) 3.(3;2) 4.(4;1)
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<N ≤ 102) là số mảnh đất của bác nông dân + 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
Trang 73
- 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
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 ĐỀ
Trang 81
ĐỀ 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
qstring.cpp
chess.pas chess.cpp
go.pas go.cpp
20
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
• 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
Trang 92
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:
• Quân 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 quân cờ khác
• Quân 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 quân 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
Trang 103
Có n ngôi nhà được đánh số từ 1 đến n Ngoài ra ta có m Pokémon, Pokémon i sẽ ở trong ngôi nhà có
số thứ tự a i và có giá trị điểm là b i và sẽ biến mất ở thời điểm t i 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 t i
nên bạn cần đến được ngôi nhà chứa Pokémon i tại thời điểm nhỏ hơnt i
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 a i , b i , t i (1 ≤ a i ≤ n, 1 ≤ b i ≤ 100, 1 ≤ t i ≤ 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à a i <a j nếu i<j
Kết quả: Ghi ra một số nguyên duy nhất là số điểm lớn nhất có thể đạt được
Trang 111
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
- 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:
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
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
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
Trang 12Bà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:
để đế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:
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 đang có là
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:
#
Trang 133
Trong đó
# Tương tự ta cũng có:
# Trong đó
Trang 141
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 ĐỀ XUẤT
ĐỀ THI MÔN TIN HỌC
KHỐI 10
(Đề này có 3 trang, gồm 3 bài)
TỔNG QUAN VỀ BÀI THI
trình Tệp dữ liệu vào Tệp dữ liệu ra Thời gian Điểm
Thay thế kí tự REPLACE.* REPLACE.INP REPLACE.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 a i bao
diêm, với mỗi bao diêm trong hòm này có b i 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ố nguyên 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 a i và b i (1 ≤ a i ≤ 10 8,1≤ b i ≤10)
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 toán số phép biến đổi tối thiểu để hoà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
Trang 152
Dữ liệu
• Dòng đầu chứa số nguyên 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ụ
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 a i Nếu bạn ném một quả bóng vào lỗ i,quả bóng sẽ nảy đến lỗ i + a i, 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 toán theo yêu cầu
Dữ liệu
• Dòng đầu chứa hai số nguyên 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ố nguyên 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
3 abb dad
2
a d
b a
8 drpepper cocacola
Trang 163
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
Trang 174
ĐÁ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 quá 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))
Trang 18(Đề 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ử A 1 , A 2 , A 3 ,…, A n 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ử A i với (L ≤ i ≤R) Đếm số
SUMSEQ0.INP SUMSEQ0.OUT
5
2 1 -1 -2 0
4
Trang 192
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ố nguyên ݉ 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ố nguyên – số dòng tối đa có thể xóa
được từ đầu ma trận
Ví dụ:
CUTLINE.INP CUTLINE.OUT
5 5 alpha tonny space betaa mamaa
2
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 hoàn toà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ଽ)
Trang 203
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ể
Cán bộ coi thi không giải thích gì thêm
Họ và tên thí sinh: Số báo danh:
Trang 21Bà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
Trang 22(Thời gian làm bài: 180 phút)
-
TỔNG QUAN BÀI THI
trình Dữ liệu vào Dữ liệu ra Điểm
Lập trình giải các bài toá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 toà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 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 đó
Trang 23Trang 2
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 ngoà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 a i và độ cao b i 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
là 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ố nguyên và
• Dòng thứ trong dòng sau chứa 2 số nguyên và
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
• 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 S i (1 S 10 ) ≤ i ≤ 9 và chi phí chăm sóc các cây tương ứng là C i (1 ≤ Ci≤ 10 )8 Trong buổi phân công lao động của lớp 10 Toán – Tin, Lớp trưởng đố các bạn hãy chọn ra 3 cây theo
thứ tự i<j<k sao cho chi phí chăm sóc cây là nhỏ nhất?
• Đầ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 24• 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 25Ý 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<x break
Ngược lại ans = x+s+1
Kết quả cần tìm cout<<ans/60<<" "<<ans%60<<endl; //ans khởi tạo=0
Độ 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
Trang 26Trang 1/3
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 Con cháu Vua Hùng đoàn kết DOANKET.* DOANKET.INP DOANKET.OUT 6
3 Các điểm cấp gạo SCAPGAO.* SCAPGAO.INP SCAPGAO.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++
Câu 1(6điểm).Con cháu Vua Hùng đoàn kết
Vua Hùng Vương thứ I (theo truyền thuyết là Hùng Lân Vương) sau khi thống nhất
15 bộ tộc đã thành lập nhà nước lấy tên là Văn Lang Nhà vua quản lý thần dân của mình bằng cách cấp cho mỗi người dân một số định danh cá nhân (ID) là một số tự nhiên (Tuy nhiên thời bấy giờ công nghệ còn chưa phát triển nên việc cấp ID chưa được khoa học, có
thể có nhiều người có ID giống nhau) Nhà nước Văn Lang lúc bấy giờ có n người dân tương ứng với n số ID là a 1 , a 2 , …, a n Các bô lão thời bấy giờ quan niệm rằng độ đoàn kết
giữa hai người dân có số định danh a i và a j sẽ là a i ^a j (là phép toánxor trong ngôn ngữ lập trình Pascal ngày nay, còn ngôn ngữ C/C++ là ^) Độ đoàn kết của cả đất nước Văn Lang
bằng tổng độ đoàn kết của tất cả các cặp người dân của cả nước
Vua Hùng rất muốn biết độ đoàn kết của đất nước Văn Lang thời bấy giờ, em hãy giúp Vua Hùng tính toán nhé
Dữ liệu vào:Nhập từ tệp văn bản DOANKET.INP có cấu trúc như sau:
• Dòng đầuchứa số nguyên dương n
• Dòng sau ghi n số tự nhiêna 1 , a 2, …, a n, hai số liên tiếp cách nhau bởi một dấu cách
Dữ liệu ra: Ghi ra tệp văn bản DOANKET.OUT một số nguyên duy nhất là độ đoàn kết của
đất nước Văn Lang
• Có 40% số test ứng với 40% số điểm của bài có 1 ≤ n ≤ 1000, 0 ≤a i≤ 1000
• Có 10% số test ứng với 10% số điểm của bài có 1 ≤ n ≤ 1000, 0 ≤a i≤ 10 7
• Có 10% số test ứng với 10% số điểm của bài có 1 ≤ n ≤ 105, 0 ≤a i≤ 1
• Có 40% số test ứng với 40% số điểm của bài có 1 ≤ n ≤ 105, 0 ≤a i≤ 10 7
TRẠI HÈ HÙNG VƯƠNGLẦN THỨ XIX
Trang 27Trang 2/3
Câu 2(7điểm).Cấp gạo
Vua Hùng thứ I cai trị nhà nước Văn Lang có nhiều chính sách rất ưu việt Ngoài việc cấp số định danh các nhân để dễ quản lý, nhà Vua còn có chính sách quản lý gạo tập trung
và cấp phát cho người dân theo nhu cầu dùng Hàng tháng, mỗi người dân sẽ đưa ra nhu cầu dùng gạo của mình và nhà vua sẽ cấp cho họ theo đúng nhu cầu đó Số gạo trong kho của nhà Vua không hạn chế, tuy nhiên, vào thời bấy giờ còn dùng cân đĩa thăng bằng để cân (để cân một khối lượng gạo nào đó ta sẽ chọn một số quả cân có tổng khối lượng đúng bằng số gạo cần cân đặt lên một bên đĩa cân và múc gạo đặt lên đĩa cân còn lại sao cho cân thăng bằng) Như vậy, có thể có những yêu cầu về khối lượng gạo không thể cân được (do không chọn được những quả cân có tổng khối lượng bằng khối lượng gạo cần cân)
Cho biết cân của nhà vua có m quả cân có khối lượng lần lượt là w 1 , w 2 , …, w m Nhà
Vua nhận được n yêu cầu về khối lượng gạo của người dân là a 1 , a 2 , …, a n Nhà Vua cần thông báo ngay cho người dân biết những yêu cầu nào có thể đáp ứng được, những yêu cầu nào không thể đáp ứng (do không cân được), em hãy giúp nhà vua tính toán việc đó
Dữ liệu vào: Nhập từ tệp văn bản CAPGAO.INP theo định dạng sau:
• Dòng đầuchứahai số nguyên dương m,n
• Dòng thứ hai chứa m số nguyên dương w 1 , w 2 , …, w m
• Dòng thứ ba chứa n số nguyên dương a 1 , a 2 , …, a n
Hai số liên tiếp trên một dòng được ghi cách nhau một dấu cách
Dữ liệu ra: Ghi ra tệp văn bản CAPGAO.OUTmột xâu nhị phân có độ dài n Ký tự thứ i (tính
từ trái sang, ký tự đầu tiên là ký tự thứ 1) là 1 nếu nhu cầu gạo thứ i là cân được và là 0 nếu nhu cầu gạo thứ i là không cân được
• Có 20% số test ứng với 20% số điểm của bài có 1 ≤ m ≤ 10, 1 ≤ n ≤ 1000, 1 ≤ w i , a i ≤ 10 9
• Có 20% số test ứng với 20% số điểm của bài có 1 ≤ m ≤ 20, 1 ≤ n ≤ 10, 1 ≤ w i , a i ≤ 10 9
• Có 20% số test ứng với 20% số điểm của bài có 1 ≤ m ≤ 20, 1 ≤ n ≤ 10 5 , 1 ≤ w i , a i ≤ 10 6
• Có 40% số test ứng với 40% số điểm của bài có 1 ≤ m ≤ 20, 1 ≤ n ≤ 10 5 , 1 ≤ w i , a i ≤ 10 9 Câu 3(7điểm).Các điểm cấp gạo
Vua Hùng thứ I cai trị đất nước Văn Lang hết mực yêu thương dân.Với chính sách cấp gạo cho người dân theo nhu cấu sử dụng, nhà Vua đã ra lệnh cho các quan xây dựng một số điểm cấp gạo để thuận tiện cho người dân đi nhận gạo Người dân đất nước Văn
Trang 28Trang 3/3
Lang sinh sống thành từng làng dọc theo một trục đường chính (mà ta coi như một trục
tọa độ), có tất cả n làng đánh số từ 1 đến n, làng thứ i có tọa độ là số nguyênx i và có số dân
là số nguyên dươngs i (i = 1, 2, …, n) Nhà Vua muốn xây dựng k điểm cấp gạo, mỗi điểm cấp
gạo sẽ nằm ở 1 làng nào đó (để tiện cho việc trông coi, bảo vệ kho gạo) Người dân khi đi nhận gạo, gần điểm cấp gạo nào sẽ tới điểm cấp gạo đó, độ vất vả của mỗi người dân sẽ bằng khoảng cách từ làng họ sống đến điểm cấp gạo gần làng đó nhất Độ vất vả của cả đất nước sẽ bằng tổng độ vất vả của mỗi người dẫn Nhà Vua rất thương dân nên muốn xây
dựng k điểm cấp gạo sao cho độ vất vả của cả đất nước là nhỏ nhất có thể
Yêu cầu: Tính toán độ vất vả của cả đất nước Văn Lang nếu xây dựng k điểm cấp
gạo hợp lý nhất
Dữ liệu vào: Nhập từ tệp văn bản SCAPGAO.INP có cấu trúc như sau:
• Dòng đầu chứa hai số nguyên dươngn và k
• Dòng thứ hai nghi n số nguyên x 1 , x 2 , …, x n
• Dòng thứ ba nghi n số nguyên dương s 1 , s 2 , …, s n
Hai số liên tiếp trên một dòng được ghi cách nhau một dấu cách
Dữ liệu ra: Ghi ra file văn bản SCAPGAO.OUTmột số nguyên duy nhất là độ vất vả nhỏ
nhất của đất nước Văn Lang
Giải thích: Hai điểm cấp gạođược đặt ở ngôi làng số 2 và số 4 Người dân ở các ngôi làng số
1, 2, 3 sẽ đến điểm cấp gạo số 1 nhận gạo (độ vất vả là 1 + 2 = 3), người dân ở ngôi làng số 4
sẽ nhận gạo ở điểm cấp gạo số 2 Tổng độ vất vả là 3
Ràng buộc:
• Có 40% số test của bài có 1 ≤ k≤ n ≤ 20, 0 ≤ xi ≤ 10 3 , 1 ≤ s i ≤ 10 3
• Có 20% số test của bài có 1 ≤ n ≤ 100, 1 ≤k ≤ 30, k ≤ n, 0 ≤ x i ≤ 10 6 , 1 ≤ s i ≤ 10 3
• Có 40% số test của bài có 1 ≤ n ≤ 1000, 1 ≤k ≤ 30, k ≤ n, 0 ≤ x i ≤ 10 9 , 1 ≤ s i ≤ 10 5
-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:
Trang 29Trang 1/2
Câu 1(6điểm).Con cháu Vua Hùng đoàn kết
Chú ý: Cần dùng số nguyên 64 bít để lưu kết quả
Câu 2(7điểm).Cấp gạo
• Subtask 1, 2 (20% số test có 1 ≤ m ≤ 10, 1 ≤ n ≤ 1000, 1 ≤ w i , a i ≤ 10 9 , 20% số test có 1 ≤
m ≤ 20, 1 ≤ n ≤ 10, 1 ≤ w i , a i ≤ 10 9 ):
Dùng QHĐ hoặc Backtracking để sinh ra tổ hợp các tổng có thể có từ tập các quả cân Lưu các số sinh được này vào một mảng b (Có 2 m số)
Với mỗi a i , tìm kiếm sự xuất hiện của a i trong mảng b
ĐPT: O(n * 2 m ) (Tìm kiếm tuần tự)
Câu 3(7điểm).Các điểm cấp gạo
Chú ý: Cần dùng số nguyên 64 bít để lưu kết quả
TRẠI HÈ HÙNG VƯƠNGLẦN THỨ XIX
THPT CHUYÊN SƠN LA
ĐÁP ÁN ĐỀ THI CHỌN HỌC SINH GIỎI
MÔN: TIN HỌC–LỚP10 ĐỀĐỀ XUẤT
Trang 30+ Khởi tạo f[i][j] = +∞
+ Với mỗi u = i – 1 j – 1, gọi cost là tổng quãng đường người dân ở các làng nằm giữa u và j cần di chuyển về 2 làng u và j ta có:
f[i][j] = min(f[i][j], f[i – 1][u] + cost)
Kết quả:
min
+ 1 ℎ&ể (ề "à ) ĐPT: O(k.n 3 )
Trang 31Trang /3 1
SỞ GD&ĐT THÁI NGUYÊN
TRƯỜNG THPT CHUYÊN
THÁI NGUYÊN
ĐỀ THI OLYMPIC TRẠI HÈ HÙNG VƯƠNG LẦN THỨ XIV
MÔN: TIN HỌC - KHỐI: 10 Thời gian: 180 phút
Đề thi gồm: 03 trang
TỔNG QUAN ĐỀ THI
Tên bài Tên chương trình File dữ liệu File kết quả
(* = CPP hoặc PAS)
Bài 1 Bánh sinh nhật
Hôm nay là sinh nhật Minh Bà ngoại Minh đã tặng anh một chiếc bánh sinh nhật rất đặc biệt Chiếc bánh có chiều dài L Minh mời N bạn đến dự sinh nhật Để buổi sinh nhật được vui vẻ Minh đã cắt bánh thành từng miếng dài 1 mét và đánh dấu chúng bằng những con số từ 1 đến L, từ trái sang phải Mỗi bạn đến sinh nhật sẽ nhận được một số ID duy nhất (một số nguyên dương từ 1 đến N), cũng như một tờ giấy với hai số nguyên, P và K Mỗi bạn sau đó được phép lấy tất cả các phần từ thứ P đến thứ K Các bạn lấy lần lượt theo số thứ tự từ bạn đầu tiên, tiếp theo là bạn 2 Thứ tự này dẫn đến một số bạn nhận được ít hơn phần bánh ban đầu nghĩ rằng mình sẽ nhận được
Viết một chương trình để xác định bạn dự kiến sẽ nhận được nhiều bánh nhất, và bạn nào thực sự có nhiều nhất
Dữ liệu vào: file bai1.inp
• Dòng đầu tiên chứa số nguyên dương L (1 ≤ L ≤ 1000), chiều dài của bánh sinh nhật
• Dòng thứ hai chứa số nguyên dương N (1 ≤ N ≤ 1000), số lượng bạn của Minh
• Mỗi dòng trong số N dòng sau chứa hai số nguyên dương Pi và Ki (1 ≤ Pi ≤ Ki ≤ L, i
= 1 N)
Dữ liệu ra: file bai1.out
• Dòng đầu tiên của đầu ra phải chứa số thứ tự của bạn đang mong đợi để nhận được nhiều bánh nhất
• Dòng thứ hai chứa số thứ tự của bạn, người thực sự đã nhận được nhiều bánh nhất
• Trong cả hai trường hợp, nếu có nhiều hơn một bạn thỏa mãn điều kiện, hãy xuất ra bạn có ID nhỏ nhất
Trang 32Trang /3 2
Điểm
• 60% số điểm cho trường hợp số đầu tiên chính xác
• 40% số điểm cho trường hợp số thứ hai chính xác
Bài 2 Tìm từ
Minh đang đọc những lá thư cũ của bà ngoại và vô tình nhìn thấy một từ dài N nhưng
đã bị đổ mực ra Minh viết lại từ này trên một mảnh giấy bằng cách thay thế M các chữ cái khó đọc bằng ký tự '#' Anh đưa mảnh giấy cho bà ngoại của mình và bà đưa cho anh K các ứng cử viên khác nhau cho các ký tự không đọc được Sau đó, Minh đã viết tất cả các từ có thể trong một quyển sổ ghi chép và quyết định xem xét kỹ tính chất của chúng để xác định những từ gốc là gì Sau khi nhìn thấy những từ được viết trong sổ ghi chép, bà của anh nhận
ra rằng từ họ đang tìm kiếm là từ thứ X theo thứ tự bảng chữ cái Bạn hãy xác định giúp Minh từ gốc
Dữ liệu vào: file bai2.inp
• Dòng đầu tiên chứa các số nguyên N, M, K và X (1 ≤ N ≤ 500, 1 ≤ M ≤ N, 1 ≤ K ≤
• Số X sẽ luôn nhỏ hơn hoặc bằng tổng số từ có thể được tạo
Dữ liệu ra: file bai2.out
• Dòng đầu tiên của đầu ra phải chứa từ thứ X theo thứ tự bảng chữ cái
Các từ theo thứ tự là: “pololjeni”, “pololjeui”, “pololjezi”, “poooljeni”, “poooljeui”, “poooljezi”,
“posoljeni”, “posoljeui”, “posoljezi”
• 1 ≤ i1< i2 < …< ip ≤ N
• A[i1 ] < A[i2] < … < A[ip]
Trang 33Trang /3 3
• P lớn nhất có thể được
Yêu cầu của bài toán là bạn phải chỉ ra tất cả các số đặc biệt của dãy A theo định nghĩa ở trên
Input : Dữ liệu vào từ file bai3.INP :
• Dòng đầu là số T (1 ≤ T ≤ 10) là số bộ test bạn phải giải quyết
• T nhóm dòng sau,mỗi nhóm gồm 2 dòng:
• Dòng đầu là số N
• Dòng thứ 2 chứa N số nguyên từ 1 tới N
Output : Dữ liệu ra ghi lên file bai3.OUT gồm 2*T tương ứng với T test mỗn test ghi hai
dòng dòng 1 là số lượng số tìm được, dòng 2 ghi các số đặc biệt của bộ test tương ứng theo thứ tự tăng dần
Trang 34Bài 1
Mỗi bạn sẽ mong muốn nhận K - P + 1 miếng bánh
Khi một bạn lấy phần bánh tại một thời điểm nó có thể đã xảy ra là bạn đó không thể lấy phần được cung cấp vì ai đó đã lấy nó rồi Do đó, chúng ta tạo ra một mảng có chiều dài tối đa là 1000, trong đó chúng ta khởi tạo mọi phần tử thành giá trị 1 (mọi phần nằm ở vị trí của nó)
Đối với mỗi bạn đánh số i, chúng ta tính tổng các giá trị trong mảng được đánh dấu từ Pi đến Ki; Ngoài ra, trong khoảng thời gian đó, chúng ta thay đổi mọi giá trị 1 thành 0 (phần không còn ở đó nữa) Trong phần này, chúng ta giữ giá trị lớn nhất của tổng
Độ phức tạp thời gian của giải pháp này là O (M * K lg K)
Bài 3
Gọi K,F[I],G[I} lần lượt là độ dài của dãy tăng dài nhất,dãy tăng dài nhất kết thúc tại A[I],dãy tăng dài nhất bắt đầu từ A[I].Như vậy A[I] là một số đặc biệt khi và chỉ khi F[I]+G[I]=K+1.Do đó bài tóan đã được đưa về dạng quy họach động cơ bản thường thấy
là tìm dãy con tăng dài nhất.Cách giải thông thường với lọai bài này có độ phức tạp N2,dĩ nhiên không thể áp dụng ở đây do N quá lớn (≤ 105 ).Vì vậy ta cần phải hướng tới một thuật giải khác có độ phức tạp nhỏ hơn, cụ thể:
• Gọi F[I] là độ dài dãy tăng dài nhất kết thúc tại I,S[I] là giá trị nhỏ nhất trong số các phần tử kết thúc của các dãy tăng có độ dài I
• Tại mỗi thời điểm I:lưu giữ K là độ dài của dãy con tăng dài nhất tới thới điểm đó.Tìm
J max sao cho S[J]<A[I] khi đó :
• F[I]:=J+1
• Nếu S[F[I]]>A[I] thì S[F[I]]:=A[I]
• Nếu F[I]>K thì K:=F[I]
• Với cách tính như trên dễ thấy tại mỗi thời điểm dãy S là dãy tăng : S[1]<S[2]<….<S[I] (có thể chứng minh bằng quy nạp ) Điều này có nghĩa là mỗi lần tính J ta chỉ phải tốn thời gian tỷ lệ với logN,do đó độ phức tạp của thuật tóan chỉ là NlogN
Trang 361
TỔNG QUAN ĐỀ THI
trình File dữ liệu File kết quả
Điểm
2 Cắt bánh CATBANH.* CATBANH.INP CATBANH.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++
Câu 1 (6,0 điểm) Mua quà
Phú Thọ không chỉ là nơi có nhiều danh lam thắng cảnh nổi tiếng mà còn có nhiều đặc sản ngon Vốn là một người nhiều tiền, Cô Thái quyết định chi S đồng tiền túi của mình
để mua đặc sản biếu cho mỗi đội tham gia Trại hè Hùng Vương lần này Cô Thái cũng đã
lên danh sách K món đặc sản được đánh số từ 1 đến K sẽ mua để làm quà cho mỗi đội, đội nào cũng sẽ được mua giống nhau gồm K món đặc sản trên
Có N đại lí đã đến chào hàng và đưa ra giá cho mỗi đặc sản mà Cô Thái dự định sẽ mua Đại lí thứ i đề xuất K số nguyên dương d i1 , d i2 , …, d iK là giá cho K món đặc sản Cô Thái quyết định chọn K món đặc sản của các đại lí để đặt mua hàng Cụ thể, Cô Thái muốn
đưa ra được bộ K số nguyên dương D1 , D 2 , …, D K thỏa mãn các điều kiện sau:
• D 1 + D 2 + … + D K =S
• D 1 ≤ D 2 ≤ … ≤ D K
• Có ít nhất một đại lí đề xuất giá D i cho đặc sản thứ i với mọi 1 ≤ i ≤ K
Nếu có nhiều bộ giá thỏa mãn thì Cô Thái muốn chọn sao cho đặc sản có chỉ số nhỏ
có giá càng nhỏ càng tốt
Dữ liệu vào: Nhập từ tệp văn bản MUAQUA.INP theo định dạng sau:
• Dòng đầu chứa ba số nguyên dương K,N và S, mỗi số cách nhau bởi một dấu cách
• Dòng thứ i trong số N dòng tiếp theo chứa K số nguyên dương d i1 , d i2 , …, d iK là giá đề
xuất của đại lí thứ i cho các đặc sản từ 1 đến K, mỗi số cách nhau bởi một dấu cách
Dữ liệu ra: Ghi ra tệp văn bản MUAQUA.OUT theo định dạng sau:
• Nếu tìm được một bộ giá thỏa mãn yêu cầu:
Dòng đầu ghi “YES”
Dòng sau ghi K số nguyên D 1 , D 2 , …, D K, mỗi số cách nhau một dấu cách
• Nếu không tồn tại bộ số thỏa yêu cầu bài toán, ghi ra “NO”
Thời gian: 180 phút (không kể thời gian giao đề)
Đề thi có 03 trang
Trang 372
• Có 30% số test ứng với 30% số điểm của bài có 1 ≤ K, N ≤ 5, 1 ≤ S ≤ 100;
• Có 30% số test ứng với 30% số điểm của bài có 1 ≤ K, N ≤ 10, 1 ≤ S ≤ 500;
• Có 40% số test ứng với 40% số điểm của bài có 1 ≤ K, N ≤ 20, 1 ≤ S ≤ 2000
Câu 2 (7,0 điểm) Cắt bánh
Hôm nay là ngày sinh nhật của thầy Cường Đội tuyển của thầy tặng cho thầy một chiếc bánh sinh nhật vuông kích thước N x N chia thành các ô vuông đơn vị, trên mỗi ô vuông có ghi một số nguyên dương tương trưng cho sự may mắn
Học trò yêu cầu thầy cắt một miếng bánh cho riêng thầy theo yêu cầu sau:
- Miếng bánh của thầy có hình tam giác vuông cân cạnh có độ dài bằng K, cạnh huyền song song hoặc trùng với đường chéo chính của chiếc bánh
- Góc vuông của tam gác luôn có hướng Đông - Bắc
- Hai cạnh vuông nối tâm chính giữa của các ô vuông đơn vị, các đỉnh của chiếc bánh nằm giữa tâm của ô vuông đơn vị
- Tổng may mắn của miếng bánh là lớn nhất Tổng may mắn của miếng bánh bằng tổng giá trị trên các ô mà cạnh của miếng bánh được cắt qua hoặc nằm trọn vẹn bên trong của miếng bánh
Dữ liệu vào: Từ tệp văn bản CATBANH.INP có cấu trúc như sau:
• Dòng 1: Chứa hai số nguyên N và K (1 ≤ K < N ≤ 500)
• N dòng sau, mỗi dòng chứa N số nguyên dương có giá trị không lớn hơn 109
Dữ liệu ra: Ghi ra tệp văn bản CATBANH.OUT gồm một số nguyên duy nhất là tổng độ
may mắn lớn nhất mà Thầy Cường cắt được
• Có 30% số test ứng với 30% số điểm của bài có K=1;
• Có 30% số test ứng với 30% số điểm của bài có N≤ 100;
• Có 40% số test còn lại không có ràng buộc gì thêm
Câu 3 (7,0 điểm) Bờm chuyển gạo
Bờm là một công nhân của một công ty tinh chế và chế biến lương thực, hôm nay
công ty có nhập khẩu N bao gạo, đánh số từ 1 đến N, bao gạo thứ i có khối lượng là M igam
(M i nguyên dương) Bờm phải vận chuyển N bao gạo này cất vào trong kho theo một trình
tự nào đó Theo yêu cầu của giám đốc, các bao gạo sau khi đưa vào trong kho sẽ được san sang nhau sao cho bao nào cũng có khối lượng là một số nguyên đồng thời không có hai bao
nào chênh lệch nhau quá 1 gam
Bờm quá “thông minh” đến mức sau khi chuyển thêm được một bao gạo nào vào trong kho Bờm lại thực hiện việc san gạo giữa các bao ở trong kho luôn (theo yêu cầu như ở
Trang 38Dữ liệu vào: Từ tệp Rice.inp có cấu trúc như sau:
- Dòng 1: Chứa số nguyên dương N (N<=20)
- Dòng 2: Chứa N số nguyên dương M 1 , M 2 , ,M N (M i ≤ 10 9 )
Kết quả: Ghi ra tệp Rice.out gồm một số nguyên duy nhất là chi phí nhỏ nhất tìm
• Có 50% số test ứng với 30% số điểm của bài có N≤ 10;
• Có 50% số test còn lại không có ràng buộc gì thêm
- Hết -
Người ra đề: Lê Thái Hòa 0917.103.563
Trang 394
Câu 1: Mua quà
Dùng duyệt kết hợp với nhánh cận
- Với mỗi i = 1,…,M: Sắp xếp các giá trị d[i, 1], d[i, 2], …, d[i, N] tăng dần
- Khi xét đến điểm của bài thứ i, giả sử điểm của bài trước đó là prevD và tổng điểm cùng những 1, 2, …, i – 1 là t, khi đó ta duyệt qua các giá trị d[1, i], d[2, i], …, d[N, i] thỏa
cận dưới ≤ d[j, i] ≤ cận trên Ở đó cận dưới = prevD, cận trên = (S - t) div (K - i + 1)
Câu 2: Cắt bánh
Dùng duyệt kết hợp tính toán trước, quy hoạch động giống như bài chọn đội hình của
đề lớp 11 nhưng không phải tính nửa trên đường chéo chính của hình vuông
Câu 3: Bờm chuyển gạo
- Dễ thấy rằng không gian bài toán chính là hoán vị của dãy gồm N phần tử, vì vậy ta
không thể giải quyết bài toán bằng phương pháp vét cạn thông thường
- Ta có nhận xét sau:
+ Giả sử sau khi vận chuyển vào kho và san đều được các bao gạo i, j, ,k có chi phí tối thiểu là F
+ Tiếp theo ta sẽ chuyển bao gạo thứ p vào kho, khi đó gọi tổng chi phí là F 1, để ý ta
thấy F 1 chỉ phụ thuộc vào F, trung bình cộng của M i , M j , M k , M P Nghĩa là nếu đã tính được
F khi tính F 1 ta không cần quan tâm đến thứ tự của việc vận chuyển i, j, ,k trước đó
+ Từ phân tích trên ta có thể rút gọn không gian bài toán từ việc xét các hoán vị i,
j, ,k thành một trạng thái "đã chuyển các bao gạo i, j, ,k"
+ Để đơn giản ta có thể sử dụng véc tơ X có độ dài N, đánh số từ phải qua trái (tiện cho việc xử lí bit), với X i = 0 tương ứng với việc chưa vận chuyển bao gạo thứ i, ngược lại
X i =1 tương ứng với việc đã vận chuyển bao thứ i vào kho Như vậy không gian của bài toán chuyển từ N! rút gọn thành 2 N
Công thức qui hoạch động:
- Giả sử đã tính được F[X] là chi phí san gạo nhỏ nhất với trạng thái X
- Ta sẽ xét tất cả các bao gạo thứ p có thể chuyển vào thêm, rõ ràng điều kiện là bao
thứ p trước đó phải chưa được chuyển vào, tức là bít thứ p của X bằng 0
- Ta sẽ tính được giá trị của các trạng thái Y (sau khi chuyển bao gạo thứ p) với Y = X
+ 2 p theo công thức:
F[Y]:=min(F[Y], F[X] + chi phí san gạo);
- Vậy độ phức tạp chung của thuật toán là O(N*2 N
).
-
HƯỚNG DẪN GIẢI THUẬT MÔN: TIN HỌC – LỚP 10
Trang 40ĐỀ ĐỀ XUẤT MÔN TIN 10
An được cho trước một xâu A=A1A2A3 An chỉ gôm các chữ cái tiếng anh in thường
An chỉ được phép chọn 2 số l, r (1 ≤ ݈ ≤ ݎ ≤ ݊) bất kì đúng một lần và đảo ngược xâu a l a l+1 a l+2 a r Lưu ý: Phép đảo ngược xâu là phép biến đổi xâu ban đầu thành một xâu mới có thứ tự các kí tự ngược lại so với xâu ban đầu Ví dụ “abcd”->”dcba”, “aacb”->”bcaa”,
Hỏi An có thể tạo ra tối đa bao nhiêu xâu khác nhau
Bài 3: CLASSROOM
Vào thời điểm 0 ban đầu, các bạn trong lớp học cô H đang xếp thành một hàng dài Mỗi bạn trong lớp học đó đang quay mặt về 1 trong 2 phía : Trái hoặc Phải