Hatena::Grouptopcoder

れんしゅうちょう。 このページをアンテナに追加 RSSフィード

 | 

2011-06-05Google Code Jam 2011 Round 2

Problem A. Airport Walkways 12:28

問題

英語が読みやすかった。

色んな速さの動く歩道が(被らない場所に)あって、何も無い区間もあって、動く歩道or普通の歩道を歩いたり走ったりして、どこで走れば効率いいの?的な問題。

普通の歩道は速さ0で動く歩道として問題無い。

明らかに遅い所で走るのが得策。

あとはなんか適当にやってやるだけ。

x,s,r,t,n=getia
res = 0
ws = []
n.times do
    b,e,w = getia
    ws.push [w,e-b.to_f]
    x -= e-b.to_f
end
ws.push [0,x]
ws.sort_by!{|a|a[0]}

res = 0
ws.map! do |w|
    speed = w[0]
    length = w[1]
    if length / (speed + r) <= t
        t -= length / (speed + r)
        res += length / (speed + r)
    elsif t != 0
        length -= t * (speed + r)
        res += t
        res += length / (speed+s).to_f
        t = 0
    else
        res += length / (speed+s).to_f
    end
end
res

解法はぱっと思い付いたのに、e-b+1とかしてたり、走ってる時の速度がr+wだと勘違いしたりして、かなり手間取ってしまった。

to_fの場所がまちまちで怖いし、幾つかもっと綺麗に書けそうな場所があるけど、まぁACしたのでいいか。

 |