結果
問題 | No.27 板の準備 |
ユーザー |
![]() |
提出日時 | 2017-11-08 16:11:30 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 197 ms / 5,000 ms |
コード長 | 1,068 bytes |
コンパイル時間 | 2,847 ms |
コンパイル使用メモリ | 77,124 KB |
実行使用メモリ | 41,440 KB |
最終ジャッジ日時 | 2024-12-26 13:17:06 |
合計ジャッジ時間 | 7,419 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 18 |
ソースコード
import java.util.Arrays; import java.util.LinkedList; import java.util.Scanner; public class Main { public static long MOD = 1000000007; public static void main(String[] args) { Scanner sc = new Scanner(System.in); final int v0 = sc.nextInt(); final int v1 = sc.nextInt(); final int v2 = sc.nextInt(); final int v3 = sc.nextInt(); final int INF = Integer.MAX_VALUE / 5 - 1; final int MAX = 30; int[] DP = new int[MAX + 1]; int answer = INF; for(int a = 1; a <= MAX; a++){ for(int b = a + 1; b <= MAX; b++){ for(int c = b + 1; c <= MAX; c++){ Arrays.fill(DP, INF); DP[0] = 0; for(int i = 0; i <= MAX - a; i++){ DP[i + a] = Math.min(DP[i + a], DP[i] + 1); } for(int i = 0; i <= MAX - b; i++){ DP[i + b] = Math.min(DP[i + b], DP[i] + 1); } for(int i = 0; i <= MAX - c; i++){ DP[i + c] = Math.min(DP[i + c], DP[i] + 1); } //System.out.println(Arrays.toString(DP)); answer = Math.min(answer, DP[v0] + DP[v1] + DP[v2] + DP[v3]); } } } System.out.println(answer); } }