結果
問題 |
No.393 2本の竹
|
ユーザー |
![]() |
提出日時 | 2017-08-06 12:04:23 |
言語 | PHP (843.2) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,091 bytes |
コンパイル時間 | 3,477 ms |
コンパイル使用メモリ | 30,660 KB |
実行使用メモリ | 92,700 KB |
最終ジャッジ日時 | 2024-10-11 22:43:47 |
合計ジャッジ時間 | 7,929 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | WA * 9 TLE * 1 -- * 18 |
コンパイルメッセージ
No syntax errors detected in Main.php
ソースコード
<?php $d = trim(fgets(STDIN)); for($i = 0; $i < $d; $i++) { $array = explode(" ", trim(fgets(STDIN))); $n1 = $array[0]; $n2 = $array[1]; $m = trim(fgets(STDIN)); $a = explode(" ", trim(fgets(STDIN))); sort($a); $sum = array(); $sum[0] = $a[0]; for($j = 1; $j < $m; $j++) { $sum[$j] = $sum[$j - 1] + $a[$j]; } // $dp[i][j]は竹1の長さj,竹2の長さ($n1+$n2-j-$sum[$i - 1])の場合に要求竹i以上で提供できる最大数を表す $dp = array(); for($j = 0; $j <= $n1 + $n2 - $sum[$m - 1]; $j++) { if(($j >= $a[$m - 1]) || ($n1 + $n2 - $sum[$m - 1] - $j >= $a[$m - 1])) { $dp[$m - 1][$j] = 1; } else { $dp[$m - 1][$j] = 0; } } for($j = $m - 2; $j >= 0; $j--) { for($k = 0; $k <= $n1 + $n2 - $sum[$j - 1]; $k++) { $dp[$j][$k] = 0; if($k >= $a[$j]) { $dp[$j][$k] = max($dp[$j][$k], 1 + $dp[$j + 1][$k - $a[$j]]); } if($n1 + $n2 - $sum[$j - 1] - $k >= $a[$j]) { $dp[$j][$k] = max($dp[$j][$k], 1 + $dp[$j + 1][$k]); } } } print($dp[0][$n1]); print("\n"); } ?>