結果
| 問題 |
No.27 板の準備
|
| コンテスト | |
| ユーザー |
ふーらくたる
|
| 提出日時 | 2016-07-06 02:25:58 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 3 ms / 5,000 ms |
| コード長 | 1,015 bytes |
| コンパイル時間 | 663 ms |
| コンパイル使用メモリ | 54,400 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-12-26 12:33:28 |
| 合計ジャッジ時間 | 1,755 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 18 |
ソースコード
#include <iostream>
using namespace std;
const int kINF = 1 << 28;
const int kMAX_LEN = 32;
int v0, v1, v2, v3;
int length[3], dp[kMAX_LEN];
int Knapsack() {
fill(dp, dp + kMAX_LEN, kINF);
dp[0] = 0;
for (int i = 0; i < 3; i++) {
for (int len = 0; len < kMAX_LEN; len++) {
if (len - length[i] >= 0) {
dp[len] = min(dp[len], dp[len - length[i]] + 1);
}
}
}
return dp[v0] + dp[v1] + dp[v2] + dp[v3];
}
void Solve() {
int answer = kMAX_LEN;
for (int a = 1; a <= kMAX_LEN; a++) {
for (int b = a + 1; b <= kMAX_LEN; b++) {
for (int c = b + 1; c <= kMAX_LEN; c++) {
length[0] = a;
length[1] = b;
length[2] = c;
// ここで個数制限なしナップザック
answer = min(answer, Knapsack());
}
}
}
cout << answer << endl;
}
int main() {
cin >> v0 >> v1 >> v2 >> v3;
Solve();
return 0;
}
ふーらくたる