1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỀ THI và đáp án HSG VÙNG DUYÊN HẢI và ĐỒNG BẰNG bắc bộ lần THỨ VII môn tin học lớp 10

50 10,6K 8
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 50
Dung lượng 2,8 MB

Nội dung

ĐỀ THI và đáp án HSG, VÙNG DUYÊN HẢI ĐỒNG BẰNG, bắc bộ lần THỨ VII , môn tin học lớp 10

Trang 1

ĐỀ THI VÀ ĐÁP ÁN HSG VÙNG DUYÊN HẢI VÀ ĐỒNG BẰNG BẮC BỘ

LẦN THỨ VII

(Đề thi do trường THPT Chuyên Thái Bình đề xuất)

Môn: Tin học – Lớp: 10 Thời gian làm bài: 180 phút

TỔNG QUAN VỀ BÀI THI

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

Hãy lập trình giải các bài toán sau:

Bài 1: Số may mắn

Trong lĩnh vực số học Vicky coi các số ở hệ 10 chỉ chứa các chữ số 4 và 7, tức là các

số chỉ chứa toàn số 4, chứa toàn số 7 hoặc cả 4 lẫn 7 là những số may mắn Các sốmay mắn được Vicky đánh số theo giá trị tăng dần của chúng, bắt đầu từ 1 Các sốmay mắn đầu tiên là 4, 7, 44, 47,

Yêu cầu: Cho số nguyên N (1 ≤ N < 1010) Hãy xác định số may mắn thứ N

Dữ liệu: Vào từ file văn bản LUCKY.INP gồm một dòng chứa số nguyên N.

Kết quả: Đưa ra file văn bản LUCKY.OUT số may mắn thứ N.

Ví dụ:

Ràng buộc:

 Có 40% số test ứng với 40% số điểm của bài có N ≤ 200

 Có 60% số test ứng với 60% số điểm của bài có N< 1010

Bài 2: Hòn đảo

Hàng rào nhà Vicky được ghép liên liếp bởi N mảnh gỗ có chiều cao lần lượt là H1,

H2, , HN Mỗi khi trời mưa hàng rào lại bị ngập nước, bọn kiến làm tổ dưới chânhàng rào lại chạy tán loạn, chúng chen nhau để leo lên hàng rào, con kiến nào leođược lên tấm gỗ càng cao thì cơ hội sống sót càng lớn Trong cơn mưa nước cứ dâng

Trang 2

đảo” bởi nước Khi độ cao tức thời của nước bằng với độ cao của tấm gỗ nào, tấm gỗ

đó sẽ được coi là nằm dưới nước

Hãy tính số lượng đảo lớn nhất mà chúng ta có thể thấy tại một điểm thời gian trongcơn mưa giông khi nước dâng lên cao dần

Dữ liệu: vào từ file văn bản ISLANDS.INP

 Dòng 1 gồm một số nguyên dương N;

 Dòng thứ i trong N dòng tiếp theo chứa số nguyên dương Hi (1 ≤ Hi ≤

1000000000)

Kết quả: ghi ra file văn bản ISLANDS.OUT một số tự nhiên là số lượng hòn đảo lớn

nhất xuất hiện ở bất kì điểm nào trong cơn mưa giông

4

Ràng buộc:

 Có 60% số test ứng với 60% số điểm của bài có N ≤ 1000

 Có 40% số test ứng với 40% số điểm của bài có N≤ 100000

Bài 3: Giá sách

Vicky có N cuốn sách và anh ta muốn đóng một tập các kệ sách để chứa tất cả cáccuốn sách này Mỗi cuốn sách có chiều rộng Wi và chiều cao Hi Các cuốn sách cầnđược bỏ vào các kệ sách theo thứ tự Ví dụ như kệ sách thứ nhất cần bỏ các cuốn sách

từ 1 đến k, kệ sách thứ 2 sẽ bắt đầu từ cuốn sách thứ k+1, và cứ thế tiếp tục Mỗi kệsách có chiều rộng tối đa là L Chiều cao của kệ sách bằng với chiều cao của cuốnsách có chiều cao lớn nhất, và chiều cao của tập các kệ sách bằng với tổng chiều caocủa các kệ sách khi xếp dọc lên Hãy giúp Vicky tính chiều cao thấp nhất có thể củatập các kệ sách khi xếp chồng lên nhau

Dữ liệu: vào từ file văn bản BOOKSHELF.INP

 Dòng 1 gồm 2 số nguyên dương N và L (1 ≤ L ≤ 1000000000)

Trang 3

 Dòng thứ i trong số N dòng tiếp theo chứa 2 số nguyên dương Hi và Wi (1 ≤

 Có 40% số test ứng với 40% số điểm của bài có N≤ 100

 Có 60% số test ứng với 60% số điểm của bài có N≤ 2000

-Hết -Hướng dẫn giảiBài 1: Số may mắn

*Cách 1: Xét lần lượt các số tự nhiên từ i từ 1 max Với mỗi số i, kiểm tra xem nó

có là số may mắn không Cứ thế cho đến khi nào tìm được số may mắn thứ N > 20% test

* Cách 2: Coi số may mắn như một xâu nhị phân trong đó số 4 là bit 0; số 7 là bit 1

Ta sẽ xây dựng đủ N số may mắn > 50% test

* Cách 3: Nhận xét: Có 2^K số may mắn có độ dài K

Do đó ta sẽ tính được số may mắn thứ N có độ dài bằng bao nhiêu(Giả sử bằng L)

Có tất cả 2^L số may mắn có độ dài L (đánh số từ 0 đến 2^L -1 : tương ứng với các dãy nhị phân

0 000

0 001

1 1)

Ta sẽ tính xem số thứ N sẽ nằm ở vị trí nào ? Giả sử là T

Từ đó sẽ tìm được số thứ N một cách dễ dàng như sau: Trong biểu diễn nhị phân của

T (độ dài L): bít 0 thay bằng 4; bit 1 thay bằng 7

Ví dụ; N=41

Trang 4

Có 4 dãy nhị phân độ dài 2

Do các dãy bit đánh số từ 0 nên T:=T-1

> Số thứ N tương ứng với dãy nhị phân có số hiệu 10 (độ dài 5): 01010

> Số cần tìm là 47474

Bài 2: Hòn đảo

Ý tưởng: Ta sẽ cho nước dâng lên cao dần: đầu tiên sẽ ngập những tấm gỗ thấp nhất, tiếp đến ngập những tấm gỗ thấp thứ hai , và đếm số đảo tại mỗi thời điểm đó và cập nhật kết quả tối ưu

* Cấu trúc dữ liệu:

Mảng h[1 N] lưu độ cao của các tấm gỗ

Mảng id[1 N] lưu chỉ số ban đầu của các tấm gỗ

Mảng under[1 N] đánh dấu tấm gỗ nào đã bị ngập

maxIslands: Số đảo lớn nhất mà ta có thể nhìn thấy

numIslands: Số đảo tại thời điểm hiện tại

Khởi tạo:

maxIslands:=1; numIslands:=1;

under[i]:=false với mọi i: 1 N

* Thuật toán

- B1: Sắp xếp các tấm gỗ tăng dần theo chiều cao (có kèm chỉ số): O(nlogn)

- B2: Xử lí lần lượt các tấm gỗ theo thứ tự tăng dần của chiều cao i: 1 N (nghĩa là

nước cứ dâng cao dần lên)

Xét tấm gỗ thứ i (trong dãy đã sắp xếp): chỉ số ban đầu của tấm gỗ đó là x (lúc này under[x]=false : tấm gỗ ở vị trí x chưa bị ngập)

B21: Đặt under[x]=true

B22: Cập nhật số đảo hiện tại:

+ Nếu x=1 hoặc x=N thì ta chỉ xét 1 tấm gỗ sát ngay bên cạnh x Cụ thể:

Nếu (x=1 và under[x+1]=true) hoặc (x=N và under[x-1]=true) thì giảm số đảo hiện tại đi 1

(Hiển nhiên: nếu x=1 và under[x+1]=false thì không làm thay đổi số lượng đảo hiện tại)

+ Nếu 1<x<N thì ta xét hai tấm gỗ bên trái và bên phải x là x-1 và x+1

Trang 5

Nếu cả hai tấm gỗ này đều không bị ngập thì tăng số đảo hiện tại lên 1 (phân chia 1 đảo thành 2)

Còn nếu cả hai tấm gỗ này đều bị ngập thì giảm số đảo hiện tại đi 1 (hợp nhất hai đảothành 1)

B23: Nếu i=N(đã xét xong tất cả các tấm gỗ) hoặc h[i+1]>h[i] (sau khi đã xét xong

các tấm gỗ có cùng độ cao thì tăng mức nước để xét các tấm gỗ cao hơn) thì ta cập nhật kết quả tối ưu

for i:=1 to N do C[i]:=1000000000;

Trong đó: hmax là chiều cao của cuốn sách cao nhất trong phạm vi từ j…i

Wsum là tổng chiều dài của các cuốn sách trong phạm vi từ j…i

Trang 6

CHUYÊN HẠ LONG LẦN THỨ VII

Môn: TIN HỌC Thời gian: 180 phút (không kể thời gian giao đề)

Ngày thi: / /2014(Đề thi có 03 trang, gồm 03 bài)

TỔNG QUAN VỀ ĐỀ THI

Tên bài File chương trình File dữ liệu vào File dữ liệu ra

Bài 1 Giả số nguyên tố PSEPRIME.* PSEPRIME.INP PSEPRIME.OUT

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

Hãy lập trình giải các bài toán sau:

Bài 1 (6,0 điểm) Giả số nguyên tố

Giả sử b là một số nguyên dương Nếu p là hợp số nguyên dương và b p chia cho p

được số dư là b thì p được gọi là giả số nguyên tố cơ sở b

Yêu cầu: Cho n là một số nguyên dương hãy liệt các giả số nguyên tố cơ sở 2 trong

phạm vi từ 1 đến n.

Dữ liệu: Vào từ file văn bản PSEPRIME.INP gồm một dòng chứa số nguyên

dương 𝑛 ≤ 106

Kết quả: Ghi ra file văn bản PSEPRIME.OUT là các giả số nguyên tố cơ sở 2 trong

phạm vi từ 1 đến n, mỗi số ghi trên một dòng theo thứ tự tăng dần Nếu không tìm

được số thỏa mãn yêu cầu, ghi ra số 0

Ví dụ:

PSEPRIME.INP PSEPRIME.OUT

Trang 7

Bài 2 (7,0 điểm) Siêu thị BigC

Ngày nghỉ cuối tuần An được mẹ cho đi siêu thị BigC để mua thực phẩm để dự trữtrong một tuần, vì mẹ An phải đi công tác dài ngày trong tuần tới Sau khi chọn đủcác gói hàng cần mua, thanh toán tiền xong và đến lúc cần đóng hàng vào hộp để

mang về nhà Số gói hàng mà hai mẹ con chọn mua là n gói với kích thước k 1 ,

k 2 , ,k n An có nhiệm vụ giúp mẹ đóng những gói hàng này vào những chiếc hộp giấy

bìa cứng Biết rằng siêu thị chỉ còn những chiếc hộp có kích thước m thỏa mãn k i ≤ m

(i = 1,2, ,n) Hỏi An cần ít nhất bao nhiêu hộp để có thể đóng đủ các gói hàng mang

về?

Dữ liệu: Vào từ file văn bản BIGC.INP

Dòng 1: Chứa hai số nguyên 𝑛 và m (1 ≤ 𝑛 ≤ 100, m ≥ 1000)

Dòng 2: Chứa 𝑛 số nguyên dương k 1 , k 2 , … , k𝑛 (1 ≤ k i ≤ 1000, với

Bài 3 (7,0 điểm) Xây cầu

Hai nước Anpha và Beta nằm ở hai bên bờ sông Omega Anpha nằm ở bừ Bắc và có

M thành phố được đánh số từ 1 đến M, Beta nằm ở bờ Nam và có N thành phố được

đánh số từ 1 đến N (theo vị trí từ Đông sang Tây) Mỗi thành phố của nước này

thường quan hệ kết nghĩa với một số thành phố của nước kia Để tăng cường tình hữunghị , hai nước muốn xây dựng các cây cầu bắc qua sông, mỗi cây cầu là nhịp nốigiữa hai thành phố kết nghĩa Với yêu cầu là các cây cầu không được cắt nhau và mỗi

thành phố chỉ là đầu cầu cho nhiều nhất một cây cầu Hiện đã có sẵn K chiếc cầu nối giữa các thành phố kết nghĩa của hai nước, K chiếc cầu này đã thỏa mãn yêu cầu trên.

Yêu cầu: Hãy cho biết số cầu tối đa mà hai nước có thể xây dựng thêm, sao cho các

cây cầu mới xây cùng với K chiếc cầu có sẵn cũng thỏa mãn yêu cầu của hai nước.

Dữ liệu: Vào từ file văn bản BRIDGE.INP

Trang 8

 K dòng tiếp theo mỗi dòng chứa 2 số nguyên dương x và y thể hiện đã có cầu

nối giữa thành phố x của nước Alpha với thành phố y của nước Beta K dòng này được sắp theo thứ tự từ nhỏ tới lớn của x

Các dòng tiếp theo mỗi dòng chứa hai số nguyên dương i và j thể hiện thành phố i của nước Alpha kết nghĩa với thành phố j của nước Beta nhưng chưa có

cầu nối giữa chúng Dòng cuối cùng chứa 2 số 0, 0 thể hiện kết thức tệp

Các số trên một dòng của Input files được ghi cách nhau ít nhất một dấu cách.

Kết quả: Ghi ra file văn bản BRIDGE.OUT gồm một số nguyên duy nhất là số cầu

tối đa mà hai nước có thể xây thêm

-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.

Ngày thi: / /2014(Gồm 02 trang)

TỔNG QUAN VỀ ĐỀ THI

Tên bài File chương trình File dữ liệu vào File dữ liệu ra

Bài 1 Giả số nguyên tố PSEPRIME.* PSEPRIME.INP PSEPRIME.OUT

Trang 9

Bài 1 (6 điểm) Số giả nguyên tố

Bài toán có 40 test, giới hạn thời gian mỗi test 1 giây.

Bước 3 So khớp, kiểm tra lần lượt từng số từ 1 đến n.

Với thuật toán này độ phức tạp O(n 2 ) sẽ có được 60% số test ứng với 60% số điểm

của bài có n ≤100000.

Thuật toán 2:

Tương tự như thuật toán 1, có sử dụng kỹ thuật chia để trị để tính 2n mod n Trong bước 3, ta chỉ cần kiểm tra các số lẻ trong phạm vi từ 1 đến n

Với thuật toán này độ phức tạp O(nlogn) có thể được 100% số điểm của bài toán.

Bài 2 (7 điểm) Siêu thị BigC

Bài toán có 40 test, giới hạn thời gian mỗi test 1 giây.

Thuật toán 1:

Dùng mô hình đề quy để liệt kê tất cả các hoán vị của 1,2, ,n Với mỗi hoán vị tươngứng với một cách đóng các gói hàng vào hộp, lần lượt đóng các gói hàng vào hộptheo đúng thứ tự hoán vị, chỉ chuyển sang hộp mới khi hộp hiện tại không thể chứathêm

Với thuật toán này độ phức tạp O(n.n!) sẽ có được 50% số test ứng với 50% số điểm của bài có n ≤ 10.

Thuật toán 2:

Sắp xếp các gói hàng theo kích thước giảm dần, tiến hành đóng các gói vào hộp Vớimỗi hộp, duyệt lần lượt các gói hàng (theo thứ tự đã sắp xếp), gói nào còn có thểchứa được vào hộp thì cho vào luôn

Với thuật toán này độ phức tạp O(nlogn) có thể được 100% số điểm của bài toán.

Bài 3 (7 điểm) Xây cầu

Bài toán có 40 test, giới hạn thời gian mỗi test 1 giây.

Thuật toán 1:

Dùng mô hình đề quy để liệt kê tất cả các hoán vị của tất cả các cặp thành phố có

Trang 10

theo đúng thứ tự hoán vị, chỉ xây thêm cầu khi chiếc cầu đó thỏa mãn yêu cầu Trongtất cả các cách đó chọn ra cách có số cầu xây thêm nhiều nhất.

Với thuật toán này độ phức tạp O(n.n!) sẽ có được 30% số test ứng với 50% số điểm của bài có n ≤ 10.

Thuật toán 2:

Sử dụng thuật toán Quy hoạch động Gọi F[i, j] là số cầu tối đa có thể xây trên đoạnsông gồm các thành phố a1, a2, ,ai của Alpha và b1, b2, ,bj của Beta, ta có công thứcquy hoạch động như sau:

 F[0, j] = F[i, 0] = 0 với i = 1 m, j = 1 n

 F[i, j] = max(F[i-1, j], F[i, j-1], F[i-1, j-1]) nếu thành phố i không kết nghĩa vớithành phố j hoặc không thể xây cầu nối thành phố i với thành phố j thỏa mãnyêu cầu

 F[i, j] = max(F[i-1, j], F[i, j-1], F[i-1, j-1]+1) nếu thành phố i kết nghĩa vớithành phố j và có thể xây cầu nối thành phố i với thành phố j thỏa mãn yêu cầu.Kết quả của bài toán là F[m, n]

Với thuật toán này độ phức tạp O(n2) có thể được 100% số điểm của bài toán.

-Hết -SỞ GIÁO DỤC & ĐÀO TẠO THÁI NGUYÊN

TRƯỜNG THPT CHUYÊN THÁI NGUYÊN

Đề đề xuất

Giáo viên: Đỗ Thị Linh

ĐỀ GIỚI THIỆU THI HỌC GIỎI DHBB

Môn: Tin hoc Lớp: 10 Năm học: 2013 - 2014

Dấu ‘*’ được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình Pascal hoăc C.

Bài 1 Icons

Dave có một bộ sưu tập gồm N viên đá quý Anh muốn sắp xếp chúng trên một bảng gồm hàng và cột theo cách tổng số hàng và cột là ít nhất có thể Hãy viết một chương trình giúp Dave tìm cách xếp như vậy

Trang 11

Dữ liệu vào: trong file Icons.inp: Dòng đầu tiên và là dòng duy nhất chứa một số tự

nhiên N (1 ≤ N ≤ 100), là số viên đá để sắp xếp Sự sắp xếp không cần chia đều cho hàng và cột, một vài chỗ trên hàng có thể không có đá.

Dữ liệu ra: trong file Icons.out: Dòng đầu tiên và duy nhất chứa số hàng và số cột.

Các số cách nhau bởi một dấu cách

Ví dụ :

Ràng buộc : có 50% số test ứng với

50% số điểm của bài có n<=50

Bài 2 Clock

Một hôm, Dave tạo một đồng hồ kỹ thuật số Mỗi số trong bốn số dùng để hiển thị thời gian (định dạng: hh:mm) được đại diện với 15 điốt đỏ đèn LED được sắp xếp trong một matrận 5x3 như hình dưới đây ('#' đại diện cho điốt sáng , và ‘.’ Đại diện cho điốt không

###Dave thiết lập thời gian chính xác trên đồng hồ mới của mình, rồi ông ngủ quên.Khi ông tỉnh dậy sáng hôm sau, ông nhìn đồng hồ mới của mình và phát hiện ra rằng một số các điốt ngừng hoạt động

Viết một chương trình xác định thời gian sớm nhất có thể tương ứng với màn hình hiển thị đồng hồ bị lỗi của Dave

Dữ liệu vào: Gồm 4 ma trận 5x3 chứa các kí tự ‘#’ và ‘.’ Cách nhau bởi một cột

dấu cách dùng để hiển thị đồng hồ bị lỗi của Dave

Dữ liệu ra: Dòng đầu tiên và duy nhất của tập tin đầu ra là thời gian tìm được.

Icons.inp Icons.inp Icons.inp

Icons.out Icons.out Icons.out

Trang 12

 Từ hành tinh x có thể đến được hành tinh y nếu x và y khác nhau tại đúng 1 vịtrí.

 Mỗi khi hạ cánh xuống hành tinh y = (y1, y2, , yn) thì năng lượng chi phí sẽ là

Trang 13

Gồm một dòng duy nhất hiển thị chi phí nhỏ nhất để di chuyển từ hành tinh sđến hành tinh e.

Bài 1 duyệt toàn bộ

Cho i chạy từ 2 đến trunc(sqrt(n)) và thử j= n div i Nếu i*j<n thì tăng j

Bài 2

Duyệt toàn bộ

Khai báo mảng hằng tgian : array[0 9] of string[15] để lưu các con số hiển thị thời gian từ 0 9

Khai báo một mảng gồm bốn số để lưu thời gian trong file input : (hhmm)

Cho giờ chạy từ 0 đến 23 phút chạy từ 0 đến 59

So sánh i :hh với thời gian cho trước có thỏa mãn không J : mm với thời gian cho trước có thỏa mãn không

Nếu thỏa mãn thì xuất i và j

Vì i chạy từ bé đến lớn, j chạy từ bé đến lớn nên luôn tìm được thời gian sớm nhất có thể

Duhanh.inp duhanh.out

5 00000 11111

1 2 3 4 5

35

Trang 14

Bài 3.

Sub 1: vét cạn bằng đệ quy quay lui kết hợp nhánh cận

Sub 2:

Thuật toán Quy hoạch động.

Ta phát biểu lại bài toán như sau:

Cho 2 xâu bit 0/1 s và e cùng chiều dài n bit Cần tính chi phí thấp nhất để biến đổi sthành e theo các điều kiện sau:

 Mỗi bước biến đổi chỉ được phép đảo duy nhất 1 bit

 Mỗi khi biến đổi xâu x[1 n] thành xâu y[1 n] thì phải trả thêm chi phí Cost(y)được tính bằng tổng các giá trị p[i] ứng với vị trí y[i] = ‘1’, 1  i  n

Ta giả thiết là các chi phí tại thành phần i, p[i] được sắp tăng và các xâu s và ecũng được sắp tương ứng theo p

Gọi c(i) là hàm chi phí thấp nhất khi phải biến đổi đoạn xâu bit (tiền tố) s[1 i] thành xâu bit e[1 i], b(i) là hàm cho số bước ứng với phép biến đổi đoạn xâu bit s[1 i] thành xâu bit e[1 i] theo cách trên, v(y,i) là tổng các giá trị p[k] ứng với vị trí y[k] = ‘1’, 1  k  i v(y,i) chính là chi phí phải trả khi hạ cánh xuống hành tinh có

mã y[1 i] Ta kí hiệu A và B là hai tiền tố gồm i-1 giá trị đầu của s và e, tức là A =s[1 i-1], B = e[1 i-1] Ta xét bit i theo 4 trường hợp a, b, c và d sau đây:

a) A0, B0 tức là s[i] = ‘0’ và e[i] = ‘0’: Ta chỉ cần biến đổi A→B là hoàn tất Ta có

Số bước cần thiết: b(i) = b(i-1);

Chi phí: c(i) = c(i-1).

b) A0, B1 tức là s[i] = ‘0’ và e[i] = ‘1’: Trước hết ta biến đổi A→B, giữ nguyên s[i] =

0 sau đó biến đổi thêm 1 bước để lật s[i] từ ‘0’ sang 1 với chi phí v(e,i) Ta có

Số bước cần thiết: b(i) = b(i-1)+1;

Chi phí: c(i) = c(i-1) + v(e,i).

c) A1, B0 tức là s[i] = ‘1’ và e[i] = ‘0’: Trước hết ta lật s[i] từ ‘1’ thành ‘0’ với chi phí

v(s,i-1) sau đó biến đổi A→B Ta có

Số bước cần thiết: b(i) = b(i-1)+1;

Chi phí: c(i) = c(i-1) + v(s,i-1).

d) A1, B1 tức là s[i] = ‘1’ và e[i] = ‘1’: Ta cần chọn chi phí min theo hai khả năng d.1và d.2 sau đây:

14

Trang 15

d.1 Giữ nguyên s[i] và e[i], chỉ biến đổi A→B

Số bước cần thiết: b(i) = b(i-1);

Chi phí: c(i) = c(i-1) + b(i)*p[i].

d.2 Trước hết biến đổi để lật s[i] từ ‘1’ thành ‘0’, sau đó biến đổi A→B, cuối cùnglật lại s[i] từ ‘0’ thành ‘1’

Số bước cần thiết: b(i) = b(i-1)+2;

Chi phí: c(i) = v(s,i-1) + c(i-1) + v(e,i).

Khi tính toán ta cũng tranh thủ tính dần các giá trị vs = v(s,i-1) và ve = v(e,i)

SỞ GD&ĐT HÀ NAM

Trường THPT chuyên Biên Hòa

Người ra đề: Lê Thị Hải Hằng

Nguyễn Thị Hồng Nhớ

ĐỀ THI HỌC SINH GIỎI CÁC TRƯỜNG CHUYÊN KHU VỰC DUYÊN HẢI VÀ ĐỒNG BẰNG BẮC BỘ

NĂM 2014 Môn: Tin học lớp 10

Thời gian làm bài: 180 phút -

Tổng quan về đề thi:

Bài Tên file bài làm Tên file dữ liệu Tên file kết quả Thời gian/test

Phần đuôi tên file bài làm * có thể là PAS hoặc CPP.

Bài 1: Dãy số(6 điểm)

Bờm rất thích những tính chất thú vị của các dãy số Bố cậu biết vậy nên đã đốcậu giải được bài toán sau:

Cho 1 dãy số

Đặt X= (an+1 – an)2 Hỏi rằng chữ số cuối cùng của số X là số nào?

Bờm đang cố gắng suy nghĩ để tìm ra cách giải Bạn là một lập trình viên giỏi nên bạnhãy giúp cậu ấy giải bài toán trên

Dữ liệu vào: DAYSO.INP

- Dòng đầu ghi số K (KZ, 1 ≤ K ≤ 1000)

- K dòng tiếp theo, mỗi dòng có 1 giá trị duy nhất là số nguyên dương n (với n≤1015)

Dữ liệu ra: DAYSO.OUT

Gồm k dòng, mỗi dòng ghi một chữ số duy nhất tìm được ứng với dòng có giá trị ntrong file dữ liệu vào

Ví dụ:

Trang 16

5

Ghi chú: Thời gian giới hạn chạy mỗi test là 1 giây.

60% số test có n ≤10000

Bài 1: Búng chim (7 điểm)

Bạn biết gì về trò chơi “Made in Việt Nam” Flappy Bird của tác giả Nguyễn HàĐông? Hôm nay, chúng ta làm quen với phiên bản 2 của trò chơi này nhé

Cho m hàng, mỗi hàng có n trụ đồng, khoảng cách giữa các trụ coi như không đáng

kể Trụ ở hàng i cột j có độ cao hij

Chú chim Flappy xuất phát ở mặt đất (độ cao bằng 0) và dự trữ W đơn vị năng lượng,mỗi lần nhảy từ ví trí này đến vị trí khác chú bị tiêu hao một năng lượng đúng bằng độcao của vị trí nhảy tới Nhiệm vụ của chú chim ở phiên bản này là phải nhảy qua n trụ

ở n cột khác nhau, mỗi lần chú chỉ có thể nhảy tới bất kỳ một trụ nào đó của cột kếtiếp

Bờm và các bạn trong lớp mới tham gia và rất hứng thú với trò chơi này Để chứng tỏkhả năng không “yếu kém”, Bờm muốn chú chim Flappy của mình nhảy từ trụ này tớitrụ khác sao cho độ cao của các trụ không giảm và tổng độ cao các trụ là lớn nhất cóthể

Bạn hãy giúp Bờm chỉ ra hành trình của chú chim Fllapy

Dữ liệu vào: FBIRD.INP

- Dòng đầu chứa ba số n, m, W

- M dòng sau, dòng thứ I+1 (i=1 n), ghi n số hi1, hi2,…, hin.

Dữ liệu ra: FBIRD.OUT

Nếu không tồn tại đáp số ghi ra số -1, ngược lại bạn ghi một số nguyên là tổng độ caolớn nhất của các trụ chú chim Flappy nhảy qua

Bài 3: (7 điểm) Mua linh vật

Vua Hùng tổ chức một cuộc thi tài để kén Phò Mã cho công chúa Mị Nương.Các chàng trai tham dự cuộc thi sẽ phải mang đầy đủ sính lễ đến theo yêu cầu của nhà

16

Trang 17

Vua Sính lễ bắt buộc phải là n loại linh vật của n ngôi làng trong đất nước Chàng traithông minh nhất là người mang đầy đủ sính lễ đến với số tiền bỏ ra là ít nhất và sẽđược kết duyên cùng công chúa Mị Nương.

Vào thời đó, cả nước có tất cả 2n ngôi làng trong đó n ngôi làng nằm bên tráicủa con sông X, và n ngôi làng còn lại nằm ở bên phải của sông X Ở hai bên sông,các ngôi làng được đánh số lần lượt từ 1 đến n theo thứ tự từ ngôi làng ở đầu sông đếnngôi làng ở cuối sông Một ngôi làng chỉ có một loại linh vật Giả sử không giới hạn

số lượng linh vật của từng loại linh vật Để có được 1 loại linh vật thì các chàng traiphải mua và trả một số tiền bằng giá trị 1 linh vật của loại linh vật đó

Mỗi chàng trai được chọn nơi xuất phát là ngôi làng có số thứ tự 1 ở một tronghai bờ sông và từ đó đi tiếp tới các ngôi làng khác Tới ngôi làng nào thì sẽ mua 1 linhvật của ngôi làng đó Mua xong linh vật ở ngôi làng thứ i rồi thì phải di chuyển tớingôi làng thứ i+1 ở một trong 2 bờ sông Ngoài số tiền phải bỏ ra để mua linh vật,người mua phải trả thêm chi phí di chuyển từ ngôi làng này tới ngôi làng khác

Chi phí di chuyển được tính như sau: Giữa hai ngôi làng liên tiếp trên cùng mộtbờ sông coi chi phí bằng 0 Giữa hai ngôi làng ở hai bên bờ sông khác nhau thì chi phílà một số nguyên dương M (M không phụ thuộc vào số thứ tự của 2 ngôi làng)

Các chàng trai sau khi mua đủ sính lễ theo yêu cầu thì sẽ mang sính lễ đó dânglên nhà Vua tại địa điểm đã được quy định trước là ngôi làng thứ n của bờ sông bênphải Sơn Tinh đang đau đầu suy nghĩ giải bài toán khó này Bạn là một lập trình viênđang tham dự kỳ thi Olympic Tin học vùng đồng bằng Sông Hồng và duyên hải Bắc

Bộ Bạn hãy giúp Sơn Tinh giải bài toán của Vua Hùng nhé

Cho N, M và giá trị của các loại linh vật ở hai bên bờ sông

Yêu cầu: Hãy đưa ra số tiền ít nhất phải trả để có thể mua được N loại linh vật theo

yêu cầu của nhà Vua?

Dữ liệu vào: LINHVAT.INP

Gồm 3 dòng:

Dòng đầu tiên ghi 2 số nguyên N, M (1≤ N ≤ 105, 1≤ M≤ 109)

Dòng thứ 2 ghi N số nguyên: a1, a2, …., an theo thứ tự là giá trị N loại linh vật củacác ngôi làng từ 1 đến n ở bờ sông bên trái

Dòng thứ 3 ghi N số nguyên: b1, b2, …., bn theo thứ tự là giá trị N loại linh vậtcủa các ngôi làng từ 1 đến n ở bờ sông bên phải

(0 < ai, bi ≤ 109; ai, bi  Z với mọi i[1 n])

Các số trên cùng 1 dòng cách nhau ít nhất một dấu cách

Dữ liệu ra: LINHVAT.OUT

Gồm 1 dòng duy nhất là số tiền ít nhất phải trả để mua N loại linh vật theo yêu cầu củanhà Vua

Trang 18

40% số test có n≤100000

Giải thích ví dụ: đi từ ngôi làng 1 ở bờ bên trái  ngôi làng thứ 2 ở bờ trái  ngôi

làng thứ 3 ở bờ phải  ngôi làng thứ 4 ở bờ trái  ngôi làng thứ 5 của bờ phải

Tổng chi phí = 4 + 9 + 6 (do đổi bờ) + 3 + 6 (do đổi bờ) + 7 + 6(do đổi bờ) +1 = 42

HẾT

-SỞ GD&ĐT HÀ NAM

Trường THPT chuyên Biên Hòa

Người ra đề: Lê Thị Hải Hằng

Nguyễn Thị Hồng Nhớ

ĐÁP ÁN ĐỀ THI HỌC SINH GIỎI CÁC TRƯỜNG CHUYÊN KHU VỰC DUYÊN HẢI VÀ ĐỒNG BẰNG BẮC BỘ

NĂM 2014 Môn: Tin học lớp 10

Thời gian làm bài: 180 phút - Hướng dẫn thuật toán

Bài 1: Dãy số (6 điểm)

Bài 2: Búng chim (7 điểm)

Nghiệm của bài toán có dạng x 1 x 2 …x n , trong đó x i là độ cao của trụ ở cột thứ i

P[i]=x 1 +…x i : Năng lượng đã tiêu thụ của Flappy khi đến cột i

Tại bước thứ i, tính được tổng độ cao của n trụ nhỏ nhất là S min =P[i]+(n-i)*x i

- Nếu S min <=W: duyệt tiếp vì bài toán có thể có nghiệm

Nếu P n >max thì max:=P n (Max là tổng độ cao lớn nhất của các trụ, khởi tạo max:=-1) + Nhánh cận (100%)

Đánh giá thêm: Nếu P n =W thì kết luận bài toán có nghiệm, tổng độ cao lớn nhất của các trụ là

W và dừng chương trình.

Bài 3: Mua linh vật (7 điểm)

Thuật toán: Quy hoạch động

- Gọi T[i,j] là chi phí ít nhất để có i loại linh vật, người mua đi từ ngôi làng có số hiệu 1 đến số hiệu i và đang ở phía bờ sông bên j (j=1: bờ bên trái, j=0: bờ bên phải)

Ta có:

T[0, 1]=T[0,0] = 0

For i:=1 to n do

Begin

T[i, 1]:= min( T[i-1,1] + a[i], T[i-1,0] + a[i] + M);

T[i,0]:= min (T[i-1,0]+b[i], T[i-1,1] + b[i] + M);

Trang 19

Ngày thi: 20 tháng 4 năm 2014

(Thời gian làm bài 180 phút không kể thời gian giao

đề)

Đề thi gồm 02 trang

Tổng quan bài thi:

Bài - Tên bài Tên tệp chương trình Tên tệp dữ liệu Tên tệp kết quả

Bài 1: Phân tích số NGUYENTO.PAS NGUYENTO.INP NGUYENTO.OUT Bài 2: Camera theo dõi CAMERA.PAS CAMERA.INP CAMERA.OUT

Học sinh dùng ngôn ngữ lập trình Pascal viết chương trình giải các bài toán sau:

Bài 1 (6 điểm) Phân tích số

Cho số nguyên dương M Hỏi có thể phân tích M thành tổng của 2 hoặc 3 số nguyên tố khác nhau được không?

Dữ liệu: vào từ tệp văn bản NGUYENTO.INP gồm 1 số nguyên dương M (M ≤ 104 )

Kết quả: ghi ra tệp văn bản NGUYENTO.OUT gồm 1 số là số cách phân tích N thành tổng của 2

hoặc 3 số nguyên tố khác nhau.

Ví dụ:

2 10 = 2 + 3 +5

Bài 2 (7 điểm) Camera theo dõi

Trong đoạn đường từ thành phố A đến thành phố B có N nút giao thông đánh số từ 1 đến N (với AB là một đoạn thẳng) Cần bố trí các camera theo dõi hoạt động giao thông tại các nút này Mỗi camera đặt ở vị trí nào đó có thể theo dõi được hoạt động giao thông trên những điểm ở cách nó không quá r (km) Biết d i (km) là khoảng cách từ nút giao thông A đến nút giao thông thứ i (i=1, 2, , N).

Yêu cầu: Tìm cách đặt một số ít nhất các camera để có thể theo dõi được hoạt động giao thông trên

đoạn đường từ A đến B (mỗi nút phải nằm trong tầm theo dõi của ít nhất một trong số các camera được bố trí).

Dữ liệu: Vào từ file văn bản CAMERA.INP gồm:

- Dòng đầu tiên ghi số nguyên dương N (N < 100) và số thực r.

- Dòng thứ i trong số N dòng tiếp theo ghi số thực d i (i=1, 2, , N) là một trong những khoảng cách từ thành phố A đến một nút giao thông bất kỳ

Kết quả: Ghi ra file văn bản CAMERA.OUT gồm:

- Dòng đầu tiên ghi k là số lượng máy theo dõi cần đặt.

- Dòng thứ i trong số k dòng tiếp theo ghi S i là khoảng cách từ A đến vị trí đặt camera thứ i (các camera đặt theo thứ tự sao cho: S 1 < S 2 < … < S k )

Ví dụ:

7 0.7 0.5 1.2 1.5 2.5 3.4

3 1.2 3.2 4.7

Trang 20

2.6 4.7

Bài 3 (7 điểm) Tìm vàng

Tương truyền rằng, ngày xưa có một mưu sĩ thấy dân chúng quá nghèo khổ nên ông ta đã đến thách đố đánh cờ cùng nhà vua nhằm lấy thóc trong kho đem phân phát cho dân nghèo Nhà vua ra điều kiện nếu đánh thua nhà vua thì mưu sĩ sẽ bị chém đầu, ngược lại mưu sĩ sẽ được trọng thưởng bằng vật chất Nếu đánh thắng cờ với nhà vua, mưu sĩ chỉ xin một điều đó là trong mỗi ô cờ gồm 8x8

ô thì lần lượt bỏ vào ô thứ 1: 1 hạt thóc, ô thứ 2: 1x2 hạt thóc, ô thứ 3: 1x2x3 hạt thóc,… cho đến ô cuối cùng Nhà vua nghe qua rất khoái chí và đồng ý ngay Sau lần đấu cờ đó nhà vua đã mất rất nhiều kho lương thực cho dân nghèo

Do bản tính hiếu thắng của nhà vua, ông vẫn tiếp tục thách đấu với những tay cao thủ cờ khác trong thiên hạ nhưng bây giờ rút kinh nghiệm ông chỉ xuất trong kho ra bây giờ không phải là thóc nữa mà là vàng Nguyên tắc để nhận được vàng sau khi đánh thắng nhà vua như sau:

1 Mỗi ô trong bàn cờ có một số Con số này được gán vào như sau:

3 Đối thủ chỉ được chọn mỗi lần một ô để nhận vàng Không được phép chọn các ô bé hơn 5.

4 Bàn cờ dùng thi đấu là bàn cờ 8x8, nhưng bàn cờ để chọn vàng là NxN, các ô được đánh

số liên tục từ 1đến N

Yêu cầu: Tìm số vàng mà đấu thủ nọ nhận được khi chọn một ô.

Dữ liệu: Vào từ file văn bản GOLD.INP gồm 1 số nguyên N là số thứ tự của ô mà đấu thủ chọn (1 ≤

Trang 21

HƯỚNG DẪN

Bài 1: Phân tích số:

Cách 1:

- Viết 1 hàm kiểm tra tính nguyên tố của một số nguyên

- Dùng 2 vòng for để đếm xem có bao nhiêu cặp hai số có tổng = M

For i:=2 to m-1 do

For j:=i+1 to m do if (NT(i)) and (NT(j)) and (i+j=M) then inc(dem);

- Dùng 3 vòng for lồng nhau để đếm xem có bao nhiêu cặp 3 số NT có tổng = M Nhận xét làm cách này sẽ chạy mất nhiều thời gian nếu M lớn

Trang 24

SỞ GD&ĐT HÀ NỘI

Trường THPT Chu Văn An

Đề thi đề nghị

OLYMPIC KHU VỰC DUYÊN HẢI BẮC BỘ

Năm học: 2013 – 2014 MÔN TIN HỌC LỚP 10

Thời gian làm bài 180 phút

(Đề gồm có 03 bài trong 03 trang)

24

Trang 25

Chú ý: Dấu '*' được thay thế bởi PAS hoặc CPP của ngôn ngữ lập trình tương ứng là Pascal hoặc C.

Hãy lập trình giải các bài toán sau:

Bài 1 Xóa chữ số

Hãng cung cấp dịch vụ điện thoại XYZ khuyến khích nhiều người đăng kí thuê bao bằng cách: Khi khách hàng đến đăng kí thuê bao thì sẽ được cấp hai số may mắn là số nguyên dương n và k, hãng sẽ

khuyến mại người đó một số tiền nhận được từ số n sau khi xóa đúng k chữ số (k nhỏ hơn số chữ số của n).

Hải vừa mới đăng kí thuê bao của hãng và được cung cấp hai số n và k, bạn hãy giúp Hải xóa đi k chữ số của số n để số nhận được là lớn nhất.

Dữ liệu vào file văn bản Bai1.inp:

- Dòng thứ nhất là số n (số chữ số của n ≤ 10 5 )

- Dòng thứ hai là số k (k<n)

Kết quả ra file văn bản Bai1.out:

- Một dòng duy nhất là số lớn nhất có được sau khi xóa đi k chữ số của n

Ví dụ:

58816 2

886

2357111317192329 6

7317192329

Ràng buộc:

- Có 30% số test ứng với 30% số điểm của bài có n<=100.

- Có 30% số test ứng với 30% số điểm của bài có 100<n<=255.

- Có 40% số test ứng với 40% số điểm của bài có 255<n<=10 5

Bài 2: Đếm hình chữ nhật

Cho một ma trận A kích thước MxN, các phần tử A[i,j] bằng 0 hoặc bằng 1, các ô số 1 liền cạnh

nhau khép kín có thể tạo thành hình chữ nhật đậm đặc – toàn là số 1 hoặc hình chữ nhật bị rỗng ở trong (ở trong lòng hình chữ nhật có các số 0) Hãy viết chương trình đếm xem có bao nhiêu hình chữ nhật như trên, trong đó có bao nhiêu hình chữ nhật đậm đặc (loại 1) và bao nhiêu hình chữ nhật rỗng ở trong có duy nhất một hình chữ nhật chứa toàn số 0 (loại 2)?

Ngày đăng: 27/09/2015, 22:22

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w