No.85 TVザッピング(1)

No.85 TVザッピング(1) - yukicoder

  • 星2つだけど普通に解けんかった。この手の発想系はまだ苦手。
  • 解けるケースはすぐに思いついたけど、それ以外では解けないかがわからなかったし、法則的ところまで考察が進まなかった。
  • とりあえず片方が 2 の倍数でよいことと、C はなんでもよいまではっきりさせたら、背理法でそれ以外のケースが潰せたのかも。
  • なんか最近は解答見て解くばっかだけど、いずれ自力でガンガン解けるようになることを夢見てとりあえず数をこなそう。うん。
class TvZapping1 {
public:
    void solve(void) {
            int N,M,C;
            cin>>N>>M>>C;
            // * 一巡できるなら C をパスにそって動かせば C はどこでも移動できるので、C はなんでもよい。
            // * + < <...< <  |      端一列だけまっすぐに移動して、後はジグザグに移動すれば良い。
            //   v >  ...> ^  |
            //   :         : 2*n
            //   v ^ <...< <  |
            //   > > >...> ^  |
            //
            if (N > M)
                swap(N,M);
            if (N==1 && M==2) // コーナーケース
                cout<<"YES"<<endl;
            else if (N % 2 == 0 && M >= 2)
                cout<<"YES"<<endl;
            else if (M % 2 == 0 && N >= 2)
                cout<<"YES"<<endl;
            else
                cout<<"NO"<<endl;
    }
};