白俊-1783号病気の夜


質問する


移動できる夜は4つの方法があります.
移動回数が4回以上の場合、移動方法はいずれも1回使用します
アクセスできる最大格数は~!?

の意見を打診


問題を理解するのはちょっと難しい.
最初のスタート地点も訪れたことがあります.
移動中に通った場所はドアではなく、
移動が終わって到着したところを訪問のお部屋で見て!チェスみたいな感じ!
可能な限り、アクセスしたセルの最大個数を求めることができます.

  • 高さ1では移動できません.最初のセルにのみアクセスできます.
    (result = 1)

  • 高さが2の場合、2種類しか移動できません(1マス上、2マス右、1マス下、2マス右).
    4回以上移動する場合はすべてのケースを使い、最大4コマまでしかアクセスできません.
    (result < 4 ? result : 4)

  • 高さが3より大きいと、あらゆる方法の制限はありませんが、
    (case 1)移動が4回未満で、できるだけ右に移動しない方法
    (case 2)4回以上移動し、すべての移動方法を使用した後!グリッドを1つだけ右に移動します.
    最大アクセス可能なセル数が大きい方法を選択します.
  • コード#コード#

    #define _CRT_SECURE_NO_WARNINGS
    
    #include <iostream>
    #include <vector>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    
    using namespace std;
    
    int n, result;
    vector<pair<int, int>> meeting;
    
    int main() {
    	int n, m, result; //세로 길이 가로 길이
    
    	cin >> n >> m;
    
    	if (n == 1) {
    		result = 1;
    	}
    	else if (n == 2) {
    		result = (1 + (m-1) / 2);
    		result = result < 4 ? result : 4;
    	}
    	else {
    		int case1 = m < 4 ? m : 4;
    		int case2 = (m - 5) + 3;
    
    		result = max(case1, case2);
    	}
    
    	cout << result;
    
    	return 0;
    }