結果
| 問題 | No.102 トランプを奪え |
| コンテスト | |
| ユーザー |
takeya_okino
|
| 提出日時 | 2017-07-21 11:01:04 |
| 言語 | PHP (843.2) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,679 bytes |
| 記録 | |
| コンパイル時間 | 222 ms |
| コンパイル使用メモリ | 30,792 KB |
| 実行使用メモリ | 59,280 KB |
| 最終ジャッジ日時 | 2024-10-09 03:29:10 |
| 合計ジャッジ時間 | 10,647 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 6 TLE * 1 -- * 1 |
コンパイルメッセージ
No syntax errors detected in Main.php
ソースコード
<?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);
}
$dp[$n1][$n2][$n3][$n4][$m] = $kasegi;
}
}
}
}
}
$ans = 'Draw';
$taro = $dp[$N1][$N2][$N3][$N4][0];
$jiro = $s - $taro;
if($taro > $jiro) $ans = 'Taro';
if($taro < $jiro) $ans = 'Jiro';
print($ans);
?>
takeya_okino