Submission #15092
ソースコード
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 | #include <bits/stdc++.h> using namespace std; const int INF = 1 << 30; int honey, orange; string kind[5]; int w[5], hate[5], maxx[5]; int dp[101][101][5]; int dfs( int h, int o, int member) { if (member == 5) { return 0; } if (dp[h][o][member] != -1) { return dp[h][o][member]; } int ret = INF; int jam_kind = kind[member] == "honey" ; int max_ho = jam_kind ? h : o; for ( int i = 0; i <= max_ho; ++i) { int unhappy = 0; int n = w[member] - i; int nh = jam_kind ? h - i : h; int no = jam_kind ? o : o - i; if (n > 0) { unhappy = 1 << (n + hate[member] + 2); } if (unhappy <= maxx[member]) { ret = min(ret, dfs(nh, no, member + 1) + unhappy); } } return dp[h][o][member] = ret; } int main() { int ans; cin >> honey >> orange; for ( int i = 0; i < 5; ++i) { cin >> kind[i] >> w[i] >> hate[i] >> maxx[i]; } memset (dp, -1, sizeof (dp)); if ((ans = dfs(honey, orange, 0)) == INF) { cout << "Hello!" << endl; } else { cout << ans << endl; } } |
ステータス
項目 | データ |
---|---|
問題 | 0015 - あふたぬーんてぃー |
ユーザー名 | ei1503 |
投稿日時 | 2017-04-22 01:45:48 |
言語 | C++11 |
状態 | Accepted |
得点 | 30 |
ソースコード長 | 1061 Byte |
最大実行時間 | 33 ms |
最大メモリ使用量 | 696 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 30 / 30 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
Alice_in1.txt | AC | 33 ms | 608 KB |
1
|
Alice_in2.txt | AC | 21 ms | 652 KB |
1
|
Alice_in3.txt | AC | 15 ms | 696 KB |
1
|
Alice_in4.txt | AC | 22 ms | 612 KB |
1
|
Alice_in5.txt | AC | 22 ms | 644 KB |
1
|