2009-12-23
SRM456 Easy: SilverDistance
class SilverDistance {
public:
int minSteps(int sx, int sy, int gx, int gy) {
int dx = gx-sx, dy = gy-sy;
if (dx==0&&dy==0) return 0;
int up=0;
int ex = dx+dy;
int ey = -dx+dy;
if (ex&1) {
up=1; ex--; ey--;
}
int hx = ex/2, hy = ey/2;
return abs(hx)+abs(hy)+up;
}
};
こんな問題で悩むなんて… orz
トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/n4_t/20091223
f(x) = x + ((x%2 == 0) ? 0 : 1)
とかが条件を満たします
なるほどそういうのもアリですね。頭固かったです。