先ほど終わったSRM564。
前回やらかしてしまったので今回は慎重に…と思ったがEasyが簡単で拍子抜け。
Mediumで苦労したものの何とか解ききった。
Mediumのポイントがいまいちだったけど、そこそこレートが回復。
ではEasyから。
http://community.topcoder.com/stat?c=problem_statement&pm=10968
チェスのナイトの動きをするとき、盤の大きさを与えられて最大何マスに移動できるかを答える。
同じところを何度通ってもよく、制限が緩い。
- 高さか幅が1:最初にコマを置いたらどこにも移動できないので1
- 高さか幅が2:例1と同じ。(長い方+1)/2
- 高さと幅が3:下記の通り8
ooo oxo ooo
- 高さか幅が3より大きい:上の穴あき四角を1マスずつ動かすと、結局どこでも移動できるので高さ×幅
class KnightCircuit2 { public: int maxSize(int w, int h) { int W,H; W=max(w,h); H=min(w,h); if(H==1) { return 1; } else if(H==2) { return (W+1)/2; } else if(H==3) { if(W==3) return 8; return W*H; } else return W*H; } };
まとめ
8になるパターンをみんな見落とさないかなーと思ったけど、うちのroomは誰も見落としてなかった。