IOI 2010 - Cluedo

Xem PDF



Dạng bài
Ngôn ngữ cho phép
C++
Điểm: 800 (p) Thời gian: 5.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Tiến sĩ Black đã bị sát hại. Thám tử Jill cần xác định thủ phạm, địa điểm và hung khí. Có 6 nghi phạm được đánh số từ 1 đến 6, 10 địa điểm được đánh số từ 1 đến 10 và 6 hung khí được đánh số từ 1 đến 6.

Jill liên tục đưa ra một bộ phỏng đoán gồm thủ phạm, địa điểm và hung khí. Mỗi bộ như vậy được gọi là một giả thuyết. Trợ lý Jack sẽ xác nhận hoặc bác bỏ từng giả thuyết. Nếu giả thuyết đúng, Jill hoàn tất công việc. Nếu giả thuyết sai, Jack chỉ ra rằng một trong ba thành phần thủ phạm, địa điểm hoặc hung khí không đúng.

Bạn cần cài đặt hàm Solve đóng vai Jill. Bộ chấm gọi Solve nhiều lần, mỗi lần với một vụ án mới. Trong mỗi lần gọi, Solve phải gọi hàm Theory(M, L, W) do bộ chấm cung cấp:

  • M là số hiệu nghi phạm, 1 <= M <= 6;
  • L là số hiệu địa điểm, 1 <= L <= 10;
  • W là số hiệu hung khí, 1 <= W <= 6.

Theory(M, L, W) trả về:

  • 0 nếu cả ba thành phần đều đúng;
  • 1 nếu thủ phạm sai;
  • 2 nếu địa điểm sai;
  • 3 nếu hung khí sai.

Nếu có nhiều thành phần sai, Jack có thể tùy ý chọn một thành phần sai để báo lại; lựa chọn này không nhất thiết giống nhau giữa các lần gọi. Ngay khi Theory trả về 0, hàm Solve phải kết thúc.

Ví dụ

Giả sử thủ phạm là 2, địa điểm là 3 và hung khí là 4. Một chuỗi lời gọi hợp lệ có thể là:

Lời gọi Giá trị có thể trả về Giải thích
Theory(1, 1, 1) 1, 2 hoặc 3 Cả ba thành phần đều sai
Theory(3, 3, 3) 1 hoặc 3 Chỉ địa điểm đúng
Theory(5, 3, 4) 1 Chỉ thủ phạm sai
Theory(2, 3, 4) 0 Cả ba thành phần đều đúng

Các nhóm điểm

Nhóm Điểm Giới hạn
1 50 Mỗi lần gọi Solve được gọi Theory không quá 360 lần.
2 50 Mỗi lần gọi Solve được gọi Theory không quá 20 lần.

Trong mỗi lượt chấm, Solve có thể được gọi tối đa 100 lần với các đáp án khác nhau. Mọi biến trạng thái dùng trong Solve phải được khởi tạo lại cho từng lần gọi.

Chi tiết cài đặt

Bạn cần nộp một tệp C++ cài đặt hàm sau:

C++
void Solve();

Tệp của bạn được biên dịch cùng cluedo.h. Tệp tiêu đề khai báo hàm do bộ chấm cung cấp:

C++
int Theory(int M, int L, int W);

Chương trình của bạn không được định nghĩa hàm main.

Tệp

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: