問題
http://community.topcoder.com/stat?c=problem_statement&pm=11476&rd=14539
解き方
(1,n)と(1,-n)の動作により現在のマスから2つ上下に移動したマスには
必ず到達することができる。
ここで、jumpTypesが偶数のとき、(x,y)が
(偶数、偶数)→上記より可能 (奇数、奇数)→(1,n) (n,1)により可能
(偶数、奇数)→(n,1)により可能
よってすべての(x,y)に到達可能。
jumpTypesが奇数のときは、
(偶数、偶数)→上記より可能 (奇数、奇数)→(1,n) により可能
(偶数、奇数)→不可能
よって(x,y)が(偶数、奇数)のときだけ不可能となる。
コード
class MagicalGirlLevelOneDivOne {
public: string isReachable(vector<int> jumpTypes, int x, int y) {
int n=jumpTypes.size();
FORE(i,0,n)if(jumpTypes[i]%2==0)return "YES";
if((x+y)%2==0)return "YES";
return "NO";
}
};
public: string isReachable(vector<int> jumpTypes, int x, int y) {
int n=jumpTypes.size();
FORE(i,0,n)if(jumpTypes[i]%2==0)return "YES";
if((x+y)%2==0)return "YES";
return "NO";
}
};