Submission #00004
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include <bits/stdc++.h> using namespace std; #define MOD 10000 int n, k; int tmp[110]; int dp[110][4][4] = {}; int solve( int i, int aa, int nu){ if (nu == 3) return 0; if (i == n) return 1; if (dp[i][aa][nu] != -1) return dp[i][aa][nu]; int ans = 0; if (tmp[i] != -1){ if (aa == tmp[i]){ ans = (ans + solve(i+1,aa,nu+1)) % MOD; } else { ans = (ans + solve(i+1,tmp[i],1))%MOD; } } else { for ( int j = 0;j < 3;j++){ if (aa == j){ ans = (ans + solve(i+1,aa,nu+1)) % MOD; } else { ans = (ans + solve(i+1,j,1))%MOD; } } } return dp[i][aa][nu] = ans; } int main(){ cin >> n >> k; int a, b; memset (tmp,-1, sizeof (tmp)); memset (dp,-1, sizeof (dp)); for ( int i = 0;i < k;i++){ cin >> a >> b; a--; b--; tmp[a] = b; } int ans = 0; if (tmp[0] != -1){ ans = solve(1, tmp[0], 1); } else { for ( int i = 0;i < 3;i++){ ans = (ans + solve(1, i, 1)) % MOD; } } cout << ans << endl; return 0; } |
ステータス
項目 | データ |
---|---|
問題 | 0003 - パスタ (Pasta) |
ユーザー名 | 403号室 |
投稿日時 | 2018-11-06 21:45:20 |
言語 | C++14 |
状態 | Accepted |
得点 | 100 |
ソースコード長 | 1200 Byte |
最大実行時間 | 39 ms |
最大メモリ使用量 | 604 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | 入力1 | 20 / 20 | *1.txt |
2 | 入力2 | 20 / 20 | *2.txt |
3 | 入力3 | 20 / 20 | *3.txt |
4 | 入力4 | 20 / 20 | *4.txt |
5 | 入力5 | 20 / 20 | *5.txt |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # | ||||
---|---|---|---|---|---|---|---|---|
2012-yo-t4-in1.txt | AC | 39 ms | 604 KB |
1
|
||||
2012-yo-t4-in2.txt | AC | 22 ms | 568 KB |
2
|
||||
2012-yo-t4-in3.txt | AC | 26 ms | 536 KB |
3
|
||||
2012-yo-t4-in4.txt | AC | 29 ms | 504 KB |
4
|
||||
2012-yo-t4-in5.txt | AC | 27 ms | 472 KB |
5
|