题解 P6462 【补刀】

· · 题解

思路

作为一名真·moba玩家,我觉得别的题解都太绕了,只要想好怎么去“构造”就可以了!

设防御塔最多攻击 tower 次小兵还没有死

(即最大的 tower 使 tower*x<h

则英雄最多攻击 tower+1 次,输出伤害 (tower+1)*y

两者总输出大于等于小兵生命 h 则英雄能补刀成功

“为了皮尔特沃夫!”

代码

语言:Ruby

n = gets.to_i
for i in 1..n
    h, x, y = gets.split.map(&:to_i) 
    if y == 0
        puts "No"
        next
    elsif x == 0
        puts "Yes"
        next
    end
    tower = h / x
    if h % x == 0 then tower -= 1 end
    if (tower + 1) * y + tower * x >= h
        puts "Yes"
    else
        puts "No"        
    end
end