結果

問題 No.393 2本の竹
ユーザー takeya_okino
提出日時 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

ソースコード

diff #

<?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");
}
?>
0