2014-09-19
SRM 633
math |
Div1 Easy (250) PeriodicJumping
問題
- 二次元平面上に蛙がいる
- ジャンプできる距離の配列が与えられる
- {2,5}が与えられたときは距離2,距離5,距離2,...のようにジャンプできる
- ジャンプする方向はx軸またはy軸に平行でなくてよい
- (x,0)に到達するために必要なジャンプの回数を求める
方針
- 総和をsumとすると、sum < |x|のときは常に到達不可能
- 基本的にはsum >= |x|なら到達できる
- が、test case3のようにでかい値が含まれているときはだめ
- 最大値をMとして、M > (|x|+sum-M)のときはどういう行きかたでも到達できない(原点とxを頂点にした3角形が作れない)
- そうでないとき、すなわちM <= (|x|+sum-M)なら、方向を工夫すれば必ず到達できる(多角形が作れる)
- 2週以上するときは、Mが2回以上含まれていて、sum以下のどこにでも行けるので、総和の判定だけでよい
- Passed System Test
- https://github.com/firewood/topcoder/blob/master/srm_6xx/srm_633/PeriodicJumping.cpp
結果
o-- +3 75.00 + 150 = 225.00pts 43rd/737 rating 1557 -> 1712 (+155)
他の総和を超えたらというのはよくある感じだが、正解できてよかった。
総和をintにしていると死ぬ100,{1,1<<29×8}というケースを用意したらはまって3撃墜。
highestの記念にスクリーンショット撮っておいた。
- 29 https://topcoder-g-hatena-ne-jp.jag-icpc.org/
- 10 https://www.google.co.jp/
- 2 Feedspotbot: http://www.feedspot.com
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CDYQFjAE&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20140823/1408772959&ei=1MEgVMeMG9CB8QXWlIL4Ag&usg=AFQjCNHwFEmlGDoAhRkE305QG55fAjThrg&bvm=bv.75775273,d.dGc
- 1 https://topcoder-g-hatena-ne-jp.jag-icpc.org
- 1 http://websearch.rakuten.co.jp/?tool_id=1&rid=2000&ref=ff&qt=TopCoder 練習
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=34&ved=0CGoQFjANOBQ&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20140919/1411113479&ei=SGIjVKHKJIW68gXHiYLICw&usg=AFQjCNFNItp4FplhyT_EAMAfW_3yOsO3EQ
- 1 https://www.google.com/
- 1 http://www.google.co.jp/
- 1 http://blog.hatena.ne.jp/kmjp/kmjp.hatenablog.jp/accesslog