IOI 2013 - Robot

Xem PDF



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

Cậu em nhỏ của Marita thường bỏ bừa bãi đồ chơi trên sàn phòng khách. May mắn là Marita đã chế tạo các robot đặc biệt để dọn đồ chơi. Cô cần bạn giúp xác định robot nào dọn đồ chơi nào.

\(T\) đồ chơi. Đồ chơi \(i\) có trọng lượng nguyên W[i] và kích thước nguyên S[i]. Có hai loại robot:

  • \(A\) robot yếu. Robot yếu \(i\) có hạn chế trọng lượng X[i], chỉ dọn được đồ chơi có trọng lượng nhỏ hơn hẳn X[i]. Kích thước đồ chơi là tùy ý.
  • \(B\) robot nhỏ. Robot nhỏ \(i\) có hạn chế kích thước Y[i], chỉ dọn được đồ chơi có kích thước nhỏ hơn hẳn Y[i]. Trọng lượng đồ chơi là tùy ý.

Mỗi robot mất một phút để dọn một đồ chơi. Các robot khác nhau có thể đồng thời dọn các đồ chơi khác nhau.

Hãy xác định liệu các robot có thể dọn sạch tất cả đồ chơi hay không. Nếu có, hãy tìm thời gian nhỏ nhất để hoàn thành công việc.

Cài đặt

Bạn cần nộp một tệp cài đặt hàm C/C++ sau và phải dùng #include "robots.h":

C++
int putaway(int A, int B, int T,
        int X[], int Y[], int W[], int S[]);

Dữ liệu vào

A là số robot yếu, B là số robot nhỏ và T là số đồ chơi. X là mảng độ dài \(A\) chứa hạn chế trọng lượng của các robot yếu; Y là mảng độ dài \(B\) chứa hạn chế kích thước của các robot nhỏ. WS là các mảng độ dài \(T\), lần lượt chứa trọng lượng và kích thước của các đồ chơi. Chỉ số của các phần tử bắt đầu từ \(0\).

Dữ liệu ra

Hàm putaway trả về số phút nhỏ nhất cần để dọn sạch tất cả đồ chơi, hoặc \(-1\) nếu không thể dọn sạch.

Ràng buộc

  • Giới hạn thời gian: 3 giây.
  • Giới hạn bộ nhớ: 64 MiB.
  • \(1 \le T \le 1\,000\,000\).
  • \(0 \le A,B \le 50\,000\)\(1 \le A+B\).
  • \(1 \le X[i],Y[i],W[i],S[i] \le 2\,000\,000\,000\) trên các chỉ số hợp lệ của từng mảng.

Phân nhóm

Mỗi nhóm tuân theo các ràng buộc chung và các điều kiện bổ sung sau.

Nhóm Điểm Điều kiện bổ sung
1 14 \(T=2\)\(A+B=2\): có đúng hai đồ chơi và hai robot.
2 14 \(B=0\): tất cả robot đều là robot yếu.
3 25 \(T \le 50\)\(A+B \le 50\).
4 37 \(T \le 10\,000\)\(A+B \le 1\,000\).
5 10 Không có điều kiện bổ sung.

Trình chấm mẫu

Trình chấm mẫu đọc tệp robots.in theo định dạng:

  • Dòng 1: A B T.
  • Dòng 2: X[0] ... X[A-1].
  • Dòng 3: Y[0] ... Y[B-1].
  • \(T\) dòng tiếp theo: mỗi dòng chứa W[i] S[i], theo thứ tự \(i=0,\ldots,T-1\).

Nếu \(A=0\) hoặc \(B=0\), dòng tương ứng (dòng 2 hoặc dòng 3) là dòng rỗng.

Ví dụ

Ví dụ 1

Dữ liệu vào
3 2 10
6 2 9
4 7
4 6
8 5
2 3
7 9
1 8
5 1
3 3
8 7
7 6
10 5
Giá trị trả về
3
Giải thích

Các tham số là A = 3, B = 2, T = 10, X = [6, 2, 9], Y = [4, 7], W = [4, 8, 2, 7, 1, 5, 3, 8, 7, 10]S = [6, 5, 3, 9, 8, 1, 3, 7, 6, 5].

Chỉ số đồ chơi 0 1 2 3 4 5 6 7 8 9
Trọng lượng 4 8 2 7 1 5 3 8 7 10
Kích thước 6 5 3 9 8 1 3 7 6 5

Thời gian nhỏ nhất là ba phút, với một cách phân công như sau:

Thời điểm Robot yếu 0 Robot yếu 1 Robot yếu 2 Robot nhỏ 0 Robot nhỏ 1
Phút thứ nhất Đồ chơi 0 Đồ chơi 4 Đồ chơi 1 Đồ chơi 6 Đồ chơi 2
Phút thứ hai Đồ chơi 5 Nghỉ Đồ chơi 3 Nghỉ Đồ chơi 8
Phút thứ ba Nghỉ Nghỉ Đồ chơi 7 Nghỉ Đồ chơi 9

Ví dụ 2

Các tham số
A = 2
B = 1
T = 3
X = [2, 5]
Y = [2]
W = [3, 5, 2]
S = [1, 3, 2]
Giá trị trả về
-1
Giải thích
Chỉ số đồ chơi 0 1 2
Trọng lượng 3 5 2
Kích thước 1 3 2

Không robot nào dọn được đồ chơi có trọng lượng \(5\) và kích thước \(3\), nên không thể dọn sạch toàn bộ đồ chơi.

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: