結果

問題 No.584 赤、緑、青の色塗り
ユーザー nmnmnmnmnmnmnmnmnmnmnmnmnmnm
提出日時 2017-09-09 16:11:06
言語 C++11
(gcc 11.4.0)
結果
RE  
実行時間 -
コード長 2,630 bytes
コンパイル時間 692 ms
コンパイル使用メモリ 89,544 KB
実行使用メモリ 49,848 KB
最終ジャッジ日時 2024-05-01 15:42:36
合計ジャッジ時間 3,880 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 35 ms
49,664 KB
testcase_01 AC 34 ms
49,848 KB
testcase_02 AC 34 ms
49,620 KB
testcase_03 AC 35 ms
49,532 KB
testcase_04 AC 36 ms
49,472 KB
testcase_05 RE -
testcase_06 AC 34 ms
49,756 KB
testcase_07 AC 37 ms
49,624 KB
testcase_08 AC 37 ms
49,664 KB
testcase_09 AC 35 ms
49,700 KB
testcase_10 AC 35 ms
49,780 KB
testcase_11 AC 35 ms
49,712 KB
testcase_12 AC 35 ms
49,844 KB
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <algorithm>
#include <cfloat>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iostream>
#include <map>
#include <memory>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>

using namespace std;

typedef long long ll;

#define sz size()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) (c).begin(), (c).end()
#define rep(i,a,b) for(ll i=(a);i<(b);++i)
#define per(i,a,b) for(ll i=b-1LL;i>=(a);--i)
#define clr(a, b) memset((a), (b) ,sizeof(a))
#define ctos(c) string(1,c)
#define print(x) cout<<#x<<" = "<<x<<endl;

#define MOD 1000000007

// 確認用の動的計画法解
// 1<=n<=30,0<=r,g,b<=30 まで対応

ll dp[33][33][33][33][5];

int main() {
  ll n,r,g,b;
  cin>>n>>r>>g>>b;
  clr(dp,0);
  dp[0][0][0][0][0] = 1;
  dp[0][1][0][0][1] = 1;
  dp[0][0][1][0][2] = 1;
  dp[0][0][0][1][3] = 1;
  rep(i,1,31){
    rep(r1,0,31){
      rep(g1,0,31){
        rep(b1,0,31){
          dp[i][r1][g1][b1][0] += dp[i-1][r1][g1][b1][0];
          dp[i][r1][g1][b1][0] %= MOD;
          dp[i][r1+1][g1][b1][1] += dp[i-1][r1][g1][b1][0];
          dp[i][r1+1][g1][b1][1] %= MOD;
          dp[i][r1][g1+1][b1][2] += dp[i-1][r1][g1][b1][0];
          dp[i][r1][g1+1][b1][2] %= MOD;
          dp[i][r1][g1][b1+1][3] += dp[i-1][r1][g1][b1][0];
          dp[i][r1][g1][b1+1][3] %= MOD;
          dp[i][r1][g1][b1][0] += dp[i-1][r1][g1][b1][1];
          dp[i][r1][g1][b1][0] %= MOD;
          dp[i][r1][g1][b1][0] += dp[i-1][r1][g1][b1][2];
          dp[i][r1][g1][b1][0] %= MOD;
          dp[i][r1][g1][b1][0] += dp[i-1][r1][g1][b1][3];
          dp[i][r1][g1][b1][0] %= MOD;
          dp[i][r1][g1][b1][0] += dp[i-1][r1][g1][b1][4];
          dp[i][r1][g1][b1][0] %= MOD;
          dp[i][r1+1][g1][b1][4] += dp[i-1][r1][g1][b1][2];
          dp[i][r1+1][g1][b1][4] %= MOD;
          dp[i][r1+1][g1][b1][4] += dp[i-1][r1][g1][b1][3];
          dp[i][r1+1][g1][b1][4] %= MOD;
          dp[i][r1][g1+1][b1][4] += dp[i-1][r1][g1][b1][1];
          dp[i][r1][g1+1][b1][4] %= MOD;
          dp[i][r1][g1+1][b1][4] += dp[i-1][r1][g1][b1][3];
          dp[i][r1][g1+1][b1][4] %= MOD;
          dp[i][r1][g1][b1+1][4] += dp[i-1][r1][g1][b1][1];
          dp[i][r1][g1][b1+1][4] %= MOD;
          dp[i][r1][g1][b1+1][4] += dp[i-1][r1][g1][b1][2];
          dp[i][r1][g1][b1+1][4] %= MOD;
        }
      }
    }
  }
  ll ans = 0;
  rep(i,0,5){
    ans += dp[n-1][r][g][b][i];
    ans %= MOD;
  }
  cout << ans << endl;
  return 0;
}
0