結果

問題 No.102 トランプを奪え
ユーザー takeya_okinotakeya_okino
提出日時 2017-07-21 10:59:31
言語 PHP
(8.3.4)
結果
WA  
実行時間 -
コード長 2,630 bytes
コンパイル時間 1,752 ms
コンパイル使用メモリ 32,144 KB
実行使用メモリ 65,188 KB
最終ジャッジ日時 2024-04-17 09:57:59
合計ジャッジ時間 8,728 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 WA -
testcase_02 OLE -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
権限があれば一括ダウンロードができます
コンパイルメッセージ
No syntax errors detected in Main.php

ソースコード

diff #

<?php
$N = explode(" ", trim(fgets(STDIN)));
$N1 = $N[0];
$N2 = $N[1];
$N3 = $N[2];
$N4 = $N[3];
$s = $N1 + $N2 + $N3 + $N4;
// $dp[i][j][k][l][m]は相手がm枚持っており、場のカードが(i, j, k, l)の場合に先手が最終的に稼げるカードの枚数を表す
$dp = array();
for($i = 0; $i <= $s; $i++) {
  $dp[0][0][0][0][$i] = 0;
}
for($t = 1; $t <= $s; $t++) {
  for($m = 0; $m <= $s - $t; $m++) {
    for($n1 = 0; $n1 <= $t; $n1++) {
      for($n2 = 0; $n2 <= $t - $n1; $n2++) {
        for($n3 = 0; $n3 <= $t - $n1 - $n2; $n3++) {
          $n4 = $t - $n1 - $n2 - $n3;
          $kasegi = -100;
          for($k1 = 1; $k1 <= min(3, $n1); $k1++) {
            $sente = $s - $t - $m;
            $moto = $sente;
            $aite = $m;
            $sente += $k1;
            if($k1 == $n1) {
              $sente += intdiv($aite + 1, 2);
              $aite -= intdiv($aite + 1, 2);
            }
            $aite += $dp[$n1 - $k1][$n2][$n3][$n4][$sente];
            $sente = $s - $aite;
            $kasegi = max($kasegi, $sente - $moto);
          }
          for($k2 = 1; $k2 <= min(3, $n2); $k2++) {
            $sente = $s - $t - $m;
            $moto = $sente;
            $aite = $m;
            $sente += $k2;
            if($k2 == $n2) {
              $sente += intdiv($aite + 1, 2);
              $aite -= intdiv($aite + 1, 2);
            }
            $aite += $dp[$n1][$n2 - $k2][$n3][$n4][$sente];
            $sente = $s - $aite;
            $kasegi = max($kasegi, $sente - $moto);
          }
          for($k3 = 1; $k3 <= min(3, $n3); $k3++) {
            $sente = $s - $t - $m;
            $moto = $sente;
            $aite = $m;
            $sente += $k3;
            if($k3 == $n3) {
              $sente += intdiv($aite + 1, 2);
              $aite -= intdiv($aite + 1, 2);
            }
            $aite += $dp[$n1][$n2][$n3 - $k3][$n4][$sente];
            $sente = $s - $aite;
            $kasegi = max($kasegi, $sente - $moto);
          }
          for($k4 = 1; $k4 <= min(3, $n4); $k4++) {
            $sente = $s - $t - $m;
            $moto = $sente;
            $aite = $m;
            $sente += $k4;
            if($k4 == $n4) {
              $sente += intdiv($aite + 1, 2);
              $aite -= intdiv($aite + 1, 2);
            }
            $aite += $dp[$n1][$n2][$n3][$n4 - $k4][$sente];
            $sente = $s - $aite;
            $kasegi = max($kasegi, $sente - $moto);
          }
        }
      }
    }
  }
}
$ans = 'Draw';
$taro = $dp[$N1][$N2][$N3][$N4][0];
$jiro = $s - $taro;
if($taro > $jiro) $ans = 'Taro';
if($taro < $jiro) $ans = 'Jiro';
print($ans);
?>
0