■A - Rotate
cout << S[1] << S[2] << S[0] << endl;
■B - Visibility
それぞれ4方向に行う。
自分自身を含め忘れるor4回カウントしないように注意
■C - ORXOR
bit全探索
2^30は1e9より大きいためWA
■D - Opposite
回転行列
■E - Traveler
それぞれの色ごとに一番左にいってから一番右までいくかその逆かが最適
最後に原点に戻ることと、無い色の処理に注意
■F - Construct a Palindrome
あと20分あれば。
dp[0][N-1] = 0から初めて、同じ文字の辺が選べるならcost + 2 に 遷移
dp[i][j] = costとして
i == jならans = min(ans,cost)
iとjが直通していたら ans = min(ans,cost + 1)