trang chủ / bài tập / compgame

Trò chơi máy tính

Đề bài

Mô tả

Trong trò chơi máy tính yêu thích của Petya, anh đến vòng cuối phải đánh trùm. Petya tìm được một số bùa chú để hỗ trợ.

Trận đấu diễn ra như sau:

  • Trùm có hai tham số: max — máu khởi điểm (cũng là máu tối đa), và reg — lượng máu hồi mỗi giây.
  • Mỗi bùa chú có hai tham số: powi — sức mạnh tính theo phần trăm máu của trùm (chỉ được dùng bùa khi máu hiện tại của trùm powi% của max), và dmgi — sát thương mỗi giây mà bùa gây ra cho trùm kể từ khi được kích hoạt cho đến hết trận.

Mỗi giây, các hành động diễn ra theo đúng thứ tự:

  1. Trùm nhận sát thương từ tất cả các bùa đã được kích hoạt.
  2. Trùm hồi reg máu (nhưng không vượt quá max).
  3. Người chơi có thể dùng tối đa một bùa mới (nếu điều kiện powi thỏa).

Trùm bị đánh bại nếu cuối một giây nào đó máu của trùm 0. Bùa được đánh số từ 1, và giây 0 là giây đầu tiên người chơi được phép dùng bùa. Không được dùng bùa sau khi trùm đã bị đánh bại.

Hãy xác định liệu Petya có thể đánh bại trùm với bộ bùa hiện có hay không, và nếu được thì thời gian tối thiểu là bao nhiêu.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên N, max, reg.
  • N dòng tiếp theo, dòng thứ i chứa hai số nguyên powidmgi — tham số của bùa thứ i.

Dữ liệu ra

  • Nếu không thể đánh bại trùm, in ra duy nhất một dòng NO.
  • Ngược lại, dòng đầu in YES. Dòng thứ hai in hai số: thời gian tối thiểu để đánh bại trùm và số bùa đã dùng. Mỗi dòng tiếp theo in hai số: thời điểm dùng bùa và chỉ số của bùa đó, in theo đúng thứ tự dùng.

Nếu có nhiều lịch trình tối ưu, in ra một lịch trình bất kỳ.

Ràng buộc

  • 1N,max,reg1000
  • 0powi100
  • 1dmgi2000

Ví dụ

Input Output Giải thích
2 100 10
100 11
90 9
YES
19 2
0 1
10 2
Tại giây 0 dùng bùa 1 (sát thương 11/giây). Mỗi giây trùm mất 1110=1 máu, nên sau 10 giây máu còn 90, dùng được bùa 2. Từ đó mất 2010=10 máu/giây, đến giây 19 thì máu 0.
2 10 3
100 3
99 1
NO Sau khi dùng bùa 1 ở giây 0, máu trùm luôn quay về 10 (100%) sau bước hồi, nên không bao giờ dùng được bùa 2 (yêu cầu 99%).
3 200 10
100 3
100 8
50 1000
YES
102 3
0 2
1 1
101 3
Dùng bùa 2 rồi bùa 1 trong hai giây đầu. Sát thương tổng cộng 11/giây, máu giảm dần 1/giây từ 200. Đến giây 101 máu còn 100=50% thì dùng được bùa 3 (sát thương cực lớn) và kết liễu vào giây 102.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0