CEOI 2023 - Bring Down the Sky Grading Server

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2700 (p) Thời gian: 4.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Đề bài

Sau lễ khai mạc thành công, Ủy ban Khoa học đang mong chờ ngày thi đầu tiên. Tuy nhiên, chủ tịch Ủy ban Kỹ thuật phát hiện hoạt động mạng đáng ngờ: dường như có người đang định tấn công máy chủ chấm bài.

Máy chủ chấm bài có năng lực tính toán \(c_G\). Kẻ tấn công muốn làm năng lực này giảm xuống không quá \(0\). Máy chủ còn được bảo vệ bởi \(f_G\) tường lửa; mỗi tường lửa làm giảm tác động của một đợt tấn công đi một lượng cố định \(S\).

Ở mỗi lượt của mình, kẻ tấn công chọn đúng một trong hai hành động:

  • Hạ một tường lửa của máy chủ, làm \(f_G\) giảm vĩnh viễn đi \(1\) nhưng không thấp hơn \(0\).
  • Dùng toàn bộ năng lực tính toán \(c_H\) của mình để tấn công máy chủ, làm \(c_G\) giảm vĩnh viễn đi
\[ \max\{c_H-f_G\cdot S,0\}. \]

Chủ tịch có thể phản công bằng cách hạ một trong \(f_H\) tường lửa của kẻ tấn công, hoặc dùng năng lực tính toán của máy chủ để tấn công, làm \(c_H\) giảm đi

\[ \max\{c_G-f_H\cdot S,0\}. \]

Hai bên luân phiên hành động và kẻ tấn công đi trước.

Ủy ban chưa biết năng lực tính toán và số tường lửa của kẻ tấn công. Đồng thời, do máy chủ vẫn có thể được nâng cấp, các thông số tương ứng của máy chủ cũng chưa xác định. Với mỗi trong \(Q\) kịch bản \((c_H,f_H,c_G,f_G)\), hãy cho biết liệu kẻ tấn công có thể hạ máy chủ hay không, ngay cả khi chủ tịch hành động tối ưu.

Dữ liệu vào

Dòng đầu chứa hai số nguyên \(S\)\(Q\).

Mỗi trong \(Q\) dòng tiếp theo chứa bốn số nguyên \(c_H\), \(f_H\), \(c_G\), \(f_G\), lần lượt là năng lực tính toán và số tường lửa của kẻ tấn công, rồi của máy chủ chấm bài.

Dữ liệu ra

In \(Q\) dòng. Dòng thứ \(i\) chứa YES nếu trong kịch bản tương ứng, kẻ tấn công có thể làm năng lực tính toán của máy chủ giảm xuống không quá \(0\) bất kể chủ tịch hành động thế nào; ngược lại, in NO.

Ràng buộc

  • \(1\le S\le 30\,000\).
  • \(1\le c_H,c_G\le 10^{12}\).
  • \(0\le f_H,f_G\le 10^{12}\).
  • \(1\le Q\le 250\,000\).

Phân nhóm

  • Subtask 1 (5 điểm): \(S,c_H,f_H,c_G,f_G\le 75\).
  • Subtask 2 (5 điểm): \(S,c_H,f_H,c_G,f_G\le 300\).
  • Subtask 3 (10 điểm): \(S=1\).
  • Subtask 4 (25 điểm): \(S,c_H,f_H,c_G,f_G\le 2\,000\).
  • Subtask 5 (20 điểm): \(S\le 400\).
  • Subtask 6 (20 điểm): \(f_G,f_H\le 125\).
  • Subtask 7 (15 điểm): Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
17 2
42 1 33 1
42 1 33 7
Output
YES
NO
Giải thích

Trong kịch bản đầu tiên:

  • Ban đầu, kẻ tấn công có thể tấn công máy chủ, làm \(c_G\) giảm \(42-1\cdot17=25\), còn \(8\).
  • Sau đó, chủ tịch không thể làm giảm \(c_H\) bằng một đợt tấn công, nên hành động hợp lý duy nhất là hạ tường lửa duy nhất của kẻ tấn công.
  • Kẻ tấn công tiếp tục tấn công, làm năng lực máy chủ giảm xuống \(8-25=-17\le0\) và hạ được máy chủ.

Trong kịch bản thứ hai:

  • Ban đầu, kẻ tấn công chỉ có thể hạ một tường lửa của máy chủ.
  • Sau đó, chủ tịch tấn công và làm \(c_H\) giảm xuống \(26\).
  • Trong hai vòng tiếp theo, kẻ tấn công vẫn chỉ có thể hạ tường lửa, còn chủ tịch tấn công ở mỗi lượt và cuối cùng làm \(c_H\) giảm xuống dưới \(0\).

Ví dụ 2

Input
1 1
999999999999 999999999999 999999999999 999999999999
Output
YES

Ví dụ 3

Input
2 1
1000000000000 0 1 1000000000000
Output
NO

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: