-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathA17.php
More file actions
30 lines (26 loc) · 733 Bytes
/
A17.php
File metadata and controls
30 lines (26 loc) · 733 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
fscanf(STDIN, "%d", $N);
$A = array_map('intval', explode(' ', trim(fgets(STDIN))));
$B = array_map('intval', explode(' ', trim(fgets(STDIN))));
$dp = array_fill(1, $N, PHP_INT_MAX);
$prev = array_fill(1, $N, -1);
$dp[1] = 0;
for ($i = 2; $i <= $N; $i++) {
if ($dp[$i] > $dp[$i - 1] + $A[$i - 2]) {
$dp[$i] = $dp[$i - 1] + $A[$i - 2];
$prev[$i] = $i - 1;
}
if ($i > 2 && $dp[$i] > $dp[$i - 2] + $B[$i - 3]) {
$dp[$i] = $dp[$i - 2] + $B[$i - 3];
$prev[$i] = $i - 2;
}
}
// 最短経路の復元
$path = [];
for ($i = $N; $i != -1; $i = $prev[$i]) {
array_push($path, $i);
}
$path = array_reverse($path);
// 出力
echo count($path) . "\n";
echo implode(" ", $path) . "\n";