Div1 Easyが解ければこちらも簡単。
http://community.topcoder.com/stat?c=problem_statement&pm=13463
問題
Div1 Easyと設定はほぼいっしょ。
違いは目的地が(x,y)とY座標が0でないことと、J[i]1周で目的地にたどり着けるかどうかを判定する点である。
解法
Div1 Easyと同じ考え。
TopCoder SRM 633 Div1 Easy PeriodicJumping - kmjp's blog
(0,0)-(x,y)を結ぶ辺と、J[i]からなる辺が多角形を成せるか判定するだけ。
class Jumping { public: string ableToGet(int x, int y, vector <int> jumpLengths) { double tot=0, ma=sqrt(x*x+y*y),N=jumpLengths.size(); int i; tot+=ma; FOR(i,N) { tot+=jumpLengths[i]; ma=max(ma,0.0+jumpLengths[i]); } if(ma*2<=tot) return "Able"; return "Not able"; } }
まとめ
とはいえ、多角形に気づかないと結構てこずりそう。