Submission #15115
ソースコード
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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #include <bits/stdc++.h> using namespace std; const int INF = 1 << 24; int m; int jam[10]; int kind[5], w[5], hate[5], maxx[5]; int dp[10][100]; int dfs( int k, int member, int j) { if (member == 5) { return 0; } if (dp[member][j] != -1) { return dp[member][j]; } int ret = INF; if (k == kind[member]) { for ( int i = 0; i <= j; ++i) { int diff = w[member] - i; int unhappy = 0; if (diff > 0) { unhappy = 1 << (diff + hate[member] + 2); } if (unhappy <= maxx[member]) { ret = min(ret, dfs(k, member + 1, j - i) + unhappy); } } } else { ret = dfs(k, member + 1, j); } return dp[member][j] = ret; } int main() { int ans = 0; cin >> m; for ( int i = 0; i < m; ++i) { cin >> jam[i]; } for ( int i = 0; i < 5; ++i) { cin >> kind[i] >> w[i] >> hate[i] >> maxx[i]; --kind[i]; } for ( int i = 0; i < m; ++i) { memset (dp, -1, sizeof (dp)); ans += dfs(i, 0, jam[i]); } if (ans >= INF) { cout << "Hello!" << endl; } else { cout << ans << endl; } return 0; } |
ステータス
項目 | データ |
---|---|
問題 | 0016 - ありすぬーんてぃー |
ユーザー名 | ei1503 |
投稿日時 | 2017-04-22 13:25:59 |
言語 | C++11 |
状態 | Accepted |
得点 | 35 |
ソースコード長 | 1109 Byte |
最大実行時間 | 43 ms |
最大メモリ使用量 | 688 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 35 / 35 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
Alice_in1.txt | AC | 37 ms | 608 KB |
1
|
Alice_in2.txt | AC | 28 ms | 464 KB |
1
|
Alice_in3.txt | AC | 35 ms | 448 KB |
1
|
Alice_in4.txt | AC | 18 ms | 688 KB |
1
|
Alice_in5.txt | AC | 43 ms | 544 KB |
1
|