Đề thi Olympic Tin học quốc tế IOI năm 2014

10 58 0
Đề thi Olympic Tin học quốc tế IOI năm 2014

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

Thông tin tài liệu

Tại giai đoạn ( ), người giới thiệu của giai đoạn này có thể bổ sung thành viên vào mạng theo một trong ba cách thức sau:.. IAmYourFriend gắn thành viên là bạn của duy nhất người g[r]

(1)

International Olympiad in Informatics 2014 13-20th July 2014

Taipei, Taiwan

Day-2 tasks Language: en-VNMfriend

Bạn bè

Chúng ta xây dựng mạng xã hội gồm thành viên đánh số 0, , Có số cặp thành viên mạng bạn bè Nếu thành viên trở thành bạn thành viên , thành viên bạn thành viên

Các thành viên bổ sung vào mạng theo giai đoạn, đánh số từ đến Thành viên bổ sung giai đoạn Ở giai đoạn 0, thành viên bổ sung thành viên mạng Trong giai đoạn thuộc giai đoạn tiếp theo, thành viên bổ sung vào mạng người giới thiệu, thành viên mạng thời Tại giai đoạn ( ), người giới thiệu giai đoạn bổ sung thành viên vào mạng theo ba cách thức sau:

IAmYourFriend gắn thành viên bạn người giới thiệu.

MyFriendsAreYourFriends gắn thành viên bạn với người bạn người giới thiệu thời điểm Chú ý là, cách thức không gắn thành viên bạn người giới thiệu

WeAreYourFriends gắn thành viên bạn người giới thiệu bạn bất cứ người bạn người giới thiệu thời điểm

Sau xây dựng xong mạng muốn xác định mẫu thử để điều tra, nghĩa cần chọn nhóm thành viên mạng Do người bạn bè thường có mối quan tâm tương tự nhau, nên mẫu thử phải không chứa cặp hai thành viên bạn bè Mỗi thành viên có độ tự tin, đánh giá số nguyên dương, muốn tìm mẫu thử với tổng độ tự tin lớn

Ví dụ

giai đoạn người giới thiệu cách thức quan hệ bạn bè bổ sung

1 IAmYourFriend (1, 0)

2 MyFriendsAreYourFriends (2, 1)

3 WeAreYourFriends (3, 1), (3, 0), (3, 2) MyFriendsAreYourFriends (4, 1), (4, 3)

5 IAmYourFriend (5, 0)

(2)

2 / bạn người giới thiệu) Kết giai đoạn mô tả bảng Mạng kết cuối hình vẽ sau đây, số vịng trịn số thành viên số bên cạnh vòng tròn độ tự tin Mẫu thử gồm hai thành viên có tổng độ tự tin 20 + 15 = 35, mẫu có tổng độ tự tin lớn

Nhiệm vụ

Cho biết mô tả giai đoạn độ tự tin thành viên, xác định mẫu thử với tổng độ tự tin lớn Bạn phải cài đặt hàm findSample

findSample(n, confidence, host, protocol) n: số lượng thành viên

confidence: mảng độ dài ; confidence[i] chứa độ tự tin thành viên host: mảng độ dài ; host[i] chứa số người giới thiệu giai đoạn

protocol: mảng độ dài ; protocol[i] chứa cách thức sử dụng giai đoạn ( ): IAmYourFriend, MyFriendsAreYourFriends,

WeAreYourFriends

Do khơng có người giới thiệu giai đoạn 0, host[0] protocol[0] khơng xác định chương trình bạn khơng truy nhập đến chúng

Hàm phải trả lại tổng độ tự tin lớn mẫu thử Subtasks

Một số subtasks sử dụng phận cách thức có thể, mơ tả bảng sau

subtask điểm độ tự tin các cách thức dùng

1 11 tất cách thức

2 dùng

MyFriendsAreYourFriends

3 dùng WeAreYourFriends

4 19 dùng IAmYourFriend

5 23 Tất độ tự tin DùngMyFriendsAreYourFriends IAmYourFriend

(3)

Chi tiết cài đặt

Bạn cần nộp file đặt tên friend.c, friend.cpp hay friend.pas File cài đặt chương trình mơ tả sử dụng đặc tả sau Bạn cần nạp header file friend.h cài đặt C/C++

C/C++ program

int findSample(int n, int confidence[], int host[], int protocol[]);

Pascal programs

function findSample(n: longint, confidence: array of longint, host: array of longint; protocol: array of longint): longint;

Sample grader

Sample grader đọc liệu vào theo khuôn dạng: line 1: n

line 2: confidence[0], , confidence[n-1]

(4)

1 / International Olympiad in Informatics 2014

13-20th July 2014 Taipei, Taiwan

Day-2 tasks Language: en-VNMgondola

Thuyền Gondola

Mao-Kong Gondola địa điểm du lịch tiếng Đài Bắc Hệ thống thuyền gondola gồm đường ray vòng tròn, bến đỗ nhất, thuyền gondola gắn số số liên tiếp từ đến chạy vòng quanh đường ray theo hướng cố định Sau thuyền gondola qua bến đỗ, qua bến đỗ gondola , gondola

Các thuyền gondola bị hỏng May mắn có số lượng không hạn chế thuyền gondola dự trữ đánh số , , v.v Khi thuyền gondola bị hỏng, thay (ở vị trí đường ray) thuyền dự trữ đầu tiên, cụ thể thuyền dự trữ có số nhỏ Ví dụ, có năm thuyền gondola gondola bị hỏng ta thay gondola

Bạn thích thú với việc đứng bến đỗ ngắm thuyền gondola qua bến đỗ Một dãy thuyền gondola dãy số số thuyền gondola qua bến đỗ Có thể xảy trường hợp nhiều thuyền gondola bị hỏng (và thay thế) trước bạn đến, gondola bị hỏng thời gian bạn đứng ngắm bến đỗ

Lưu ý cấu hình thuyền gondola đường ray cho nhiều dãy thuyền gondola, tuỳ thuộc vào việc bạn có mặt bến đỗ gondola qua bến đỗ Ví dụ khơng có gondola bị hỏng (2, 3, 4, 5, 1) (4, 5, 1, 2, 3) dãy thuyền gondola có thể, (4, 3, 2, 5, 1) khơng phải (vì gondola xuất sai thứ tự) Nếu gondola bị hỏng, ta quan sát thấy dãy thuyền gondola (4, 5, 6, 2, 3) Nếu gondola bị hỏng, ta thay gondola ta quan sát thấy dãy thuyền gondola (6, 2, 3, 7, 5) Nếu sau gondola bị hỏng, ta thay gondola ta quan sát thấy dãy thuyền gondola (3, 8, 5, 6, 2)

gondola bị hỏng gondola thay dãy thuyền gondola có thể

1 (4, 5, 6, 2, 3)

4 (6, 2, 3, 7, 5)

7 (3, 8, 5, 6, 2)

Một dãy thay dãy số gồm số thuyền gondola bị hỏng, theo thứ tự mà chúng bị hỏng Ở ví dụ trên, dãy thay (1, 4, 7) Một dãy thay tạo dãy thuyền gondola sau gondola bị hỏng theo dãy thay , dãy thuyền gondola quan sát thấy Kiểm tra dãy thuyền Gondola

(5)

valid(n, inputSeq)

n: độ dài dãy đầu vào

inputSeq: mảng có độ dài ; inputSeq[i] phần tử thứ dãy đầu vào với

Hàm phải trả giá trị dãy đầu vào dãy thuyền gondola, trường hợp ngược lại

Subtasks 1, 2, 3

subtask điểm inputSeq

1 số khoảng từ to xuất lần

2 inputSeq[i]

3 10 inputSeq[i]

Ví dụ

subtask inputSeq giá trị trả về ghi chú

1 (1, 2, 3, 4, 5, 6, 7) 1 (3, 4, 5, 6, 1, 2)

1 (1, 5, 3, 4, 2, 7, 6) xuất trước (4, 3, 2, 1) xuất trước (1, 2, 3, 4, 5, 6, 5) hai gondola có số (2, 3, 4, 9, 6, 7, 1) dãy thay (5, 8)

3 (10, 4, 3, 11, 12) xuất trước Dãy thay thế

Trong ba subtask tiếp theo, bạn phải xây dựng dãy thay mà tạo dãy thuyền gondola cho trước Bất kỳ dãy thay thoả mãn điều kiện chấp nhận Bạn cần cài đặt hàm replacement

replacement(n, gondolaSeq, replacementSeq) n độ dài dãy thuyền gondola

gondolaSeq: dãy có độ dài ; gondolaSeq đảm bảo dãy thuyền gondola, gondolaSeq[i] phần tử dãy với

(6)

3 /

replacementSeq: mảng đủ lớn để chứa dãy thay thế; bạn cần trả dãy thay cách gán giá trị phần tử dãy thay cho replacementSeq[i], với

Subtasks 4, 5, 6

subtask điểm gondolaSeq

4 gondolaSeq[i]

5 10 gondolaSeq[i]

6 20 gondolaSeq[i]

Ví dụ

subtask gondolaSeq giá trị trả về replacementSeq

4 (3, 1, 4) (2)

4 (5, 1, 2, 3, 4) ( ) (2, 3, 4, 9, 6, 7, 1) (5, 8) Đếm số dãy thay thế

Trong bốn subtask tiếp theo, bạn phải đếm số lượng dãy thay có thể, mà tạo dãy cho trước (có thể dãy thuyền gondola không phải), lấy phần dư chia cho 1,000,000,009 Bạn cần cài đặt hàm countReplacement

countReplacement(n, inputSeq) n: độ dài dãy đầu vào

inputSeq: mảng có độ dài ; inputSeq[i] phần tử dãy đầu vào với

Nếu dãy đầu vào dãy thuyền gondola, đếm số lượng dãy thay mà tạo dãy thuyền gondola (có thể có giá trị lớn), trả phần dư chia số này cho 1,000,000,009 Nếu dãy đầu vào dãy thuyền gondola, hàm phải trả giá trị Nếu dãy đầu vào dãy thuyền gondola khơng có gondola bị hỏng, hàm phải trả

Subtasks 7, 8, 9, 10

subtask điểm inputSeq

7 inputSeq[i]

8 15 inputSeq[i] , gondola ban đầu khơng bị hỏng

(7)

10 10 inputSeq[i]

subtask điểm inputSeq

Ví dụ

subtask inputSeq giá trị trả về dãy thay thế

7 (1, 2, 7, 6) (3, 4, 5) (4, 5, 3) (2, 3, 4, 12, 6, 7, 1) (5, 8, 9, 10, 11)

9 (4, 7, 4, 7) inputSeq dãy thuyền gondola 10 (3, 4) (1, 2) (2, 1)

Chi tiết cài đặt

Bạn phải nộp file đặt tên gondola.c, gondola.cpp gondola.pas File phải cài đặt ba chương trình mơ tả (ngay bạn định giải vài subtask), sử dụng đặc tả Bạn cần nạp header file gondola.h cài đặt sử dụng C/C++

C/C++ programs

int valid(int n, int inputSeq[]);

int replacement(int n, int gondolaSeq[], int replacementSeq[]); int countReplacement(int n, int inputSeq[]);

Pascal programs

function valid(n: longint; inputSeq: array of longint): integer; function replacement(n: longint; gondolaSeq: array of longint; var replacementSeq: array of longint): longint;

function countReplacement(n: longint; inputSeq: array of longint): longint;

Sample grader

Sample grader đọc liệu đầu vào sử dụng định dạng sau:

dòng 1: T, số thứ tự subtask mà chương trình bạn định giải ( ) dòng 2: n, độ dài dãy đầu vào

(8)

1 / International Olympiad in Informatics 2014

13-20th July 2014 Taipei, Taiwan

Day-2 tasks Language: en-VNMholiday

Kỳ nghỉ

Jian-Jia lên kế hoạch cho kỳ nghỉ Đài Loan Trong kỳ nghỉ này, Jian-Jia di chuyển từ thành phố đến thành phố khác thăm điểm du lịch thành phố

Có thành phố Đài Loan, tất nằm dọc theo đường cao tốc Các thành phố đánh số liên tiếp đến Thành phố với , liền kề với thành phố

Thành phố liền kề với thành phố thành phố thành phố liền kề với thành phố thành phố

Mỗi thành phố có số điểm du lịch Jian-Jia có ngày cho kỳ nghỉ lên kế hoạch để thăm nhiều điểm du lịch Jian-Jia chọn thành phố làm thành phố xuất phát cho kỳ nghỉ Mỗi ngày kỳ nghỉ, Jian-Jia di chuyển đến thành phố liền kề thăm tất điểm du lịch thành phố mà dừng chân, không thực hai điều Jian-Jia không bao thăm điểm du lịch thành phố hai lần Jian-Jia trong thành phố nhiều lần Hãy giúp Jian-Jia lên kế hoạch cho kỳ nghỉ để thăm nhiều điểm du lịch khác

Ví dụ

Giả sử Jian-Jia có ngày cho kỳ nghỉ, có thành phố (được liệt kê bảng đây) Jian-Jia xuất phát từ thành phố Trong ngày thứ nhất, Jian-Jia thăm quan 20 điểm du lịch thành phố Trong ngày thứ hai Jian-Jia di chuyển từ thành phố đến thành phố ngày thứ ba thăm 30 điểm du lịch thành phố Jian-Jia dành ba ngày để di chuyển từ thành phố đến thành phố thăm 10 điểm du lịch thành phố vào ngày thứ bảy Tổng số điểm du lịch mà Jian-Jia thăm 20 + 30 + 10 = 60, số lượng lớn điểm du lịch mà Jian-Jia thăm ngày xuất phát từ thành phố

thành phố số điểm du lịch

0 10

1

2 20

3 30

4

ngày hoạt động

(9)

7 thăm điểm du lịch thành phố

ngày hoạt động

Nhiệm vụ

Bạn cần cài đặt hàm findMaxAttraction để tính số lượng nhiều điểm du lịch mà Jian-Jia thăm

findMaxAttraction(n, start, d, attraction) n: số lượng thành phố

start: thành phố xuất phát d: số lượng ngày

attraction: mảng có độ dài ; attraction[i] số lượng điểm du lịch thành phố

, với

Hàm phải trả số lượng nhiều điểm du lịch mà Jian-Jia thăm Subtasks

Trong tất subtasks có số điểm du lịch thành phố không âm

Các ràng buộc thêm:

subtask điểm số điểm du lịch lớn thành

phố thành phố xuấtphát

1 1,000,000,000 khơng có ràng buộc

nào

2 23 100 thành phố

3 17 1,000,000,000 khơng có ràng buộc

nào

4 53 1,000,000,000 khơng có ràng buộc

nào Chi tiết cài đặt

Bạn phải nộp file, đặt tên holiday.c, holiday.cpp holiday.pas File cài đặt chương trình mô tả sử dụng đặc tả sau Bạn cần phải nạp header file holiday.h sử dụng C/C++

Chú ý kết lớn kiểu liệu trả hàm findMaxAttraction số nguyên 64-bit

(10)

3 /

long long int findMaxAttraction(int n, int start, int d, int attraction[]);

Pascal program

function findMaxAttraction(n, start, d : longint; attraction : array of longint): int64;

Sample grader

Sample grader đọc liệu vào theo khuôn dạng sau: line 1: n, start, d

line 2: attraction[0], , attraction[n-1]

Ngày đăng: 09/04/2021, 21:55

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan