[Buổi 1][Tư duy giải bài & Độ phức tạp][HW] Bài 3: Ngân sách phép toán
Ngân sách phép toán
Bối cảnh và bài toán
Trước khi cho một chương trình chạy trên hệ thống chấm, nhóm kỹ thuật muốn có một bộ lọc sơ bộ để loại những phương án có khối lượng công việc quá lớn. Bộ lọc không mô phỏng thời gian thực tế; nó chỉ dùng một mô hình số bước đơn giản dựa trên lớp độ phức tạp.
Với mỗi kịch bản, hệ thống biết kích thước dữ liệu n, số lần lặp lại toàn bộ tác vụ q, ngân sách tối đa B bước và một mã type mô tả lớp công việc:
O1:f(n) = 1;OLOGN:f(n) = 1 + floor(log2(n));ON:f(n) = n;ONLOGN:f(n) = n * (1 + floor(log2(n)));ON2:f(n) = n * n.
Tổng số bước ước lượng của kịch bản là q * f(n).
Đây là mô hình học tập để luyện đọc complexity và whole workload; không phải phép quy đổi Big-O thành mili-giây.
Yêu cầu
Với mỗi kịch bản, in ACCEPT nếu tổng bước ước lượng không vượt quá B, ngược lại in REJECT.
Input
- Dòng 1: số kịch bản
T. Tdòng tiếp theo:n q B type.
Output
Với mỗi kịch bản, in một dòng ACCEPT hoặc REJECT.
Ràng buộc
1 <= T <= 2 * 10^51 <= n, q <= 10^61 <= B <= 10^18- Với mọi kịch bản,
q * n * n <= 10^18.
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | T ≤ 2, n ≤ 100, q ≤ 10 | 01–04 |
| S2 | 30% | T ≤ 1 000, n ≤ 10^4, q ≤ 10^4 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
4
100000 1 200000 ON
100000 1 10000000 ON2
1000 100 2000000 ONLOGN
1 100 99 O1
Output
ACCEPT
REJECT
ACCEPT
REJECT
Giải thích. Kịch bản 1 cần 100000 bước. Kịch bản 2 cần 10^10 bước nên vượt ngân sách. Với n=1000, ta có 1+floor(log2 1000)=10, nên kịch bản 3 cần 100*1000*10=10^6 bước.
Ví dụ 2
Input
2
8 10 40 OLOGN
8 10 39 OLOGN
Output
ACCEPT
REJECT
Giải thích. 1+floor(log2 8)=4, nên mỗi kịch bản cần 10*4=40 bước. Ngân sách 40 vừa đủ, còn 39 thì không.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M01-B01-HW03 |
| Buổi | B01 |
| Loại bài | HOMEWORK |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 25 phút |
| Time limit | 1.5 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++17 |
Nguồn: FULLHOUSE DEV — Self-generated.
Comments