QOJ.ac
QOJ
ID | Submission ID | Problem | Hacker | Owner | Result | Submit time | Judge time |
---|---|---|---|---|---|---|---|
#1516 | #820424 | #9879. ReTravel | Survivor_winner | HuTao | Failed. | 2025-02-05 09:48:50 | 2025-02-05 09:48:51 |
Details
Extra Test:
Invalid Input
input:
2 3 3 1 2 1 3
output:
result:
FAIL Expected EOF (stdin, line 4)
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#820424 | #9879. ReTravel | HuTao | AC ✓ | 3ms | 8924kb | C++14 | 865b | 2024-12-18 21:24:29 | 2024-12-18 21:24:36 |
answer
#include <bits/stdc++.h>
using namespace std;
const int N = 505;
int n;
int x[N][N], y[N][N], s[N][N];
long long f[N][N];
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i ++ ) scanf("%d%d", &x[i][i], &y[i][i]);
memset(f, 0x3f, sizeof f);
for(int i = n; i >= 1; i -- )
{
s[i][i] = i;
f[i][i] = 0;
for(int j = i + 1; j <= n; j ++ )
{
x[i][j] = min(x[i][j - 1], x[j][j]);
y[i][j] = min(y[i][j - 1], y[j][j]);
for(int k = s[i][j - 1]; k <= s[i + 1][j]; k ++ )
{
long long w = f[i][k] + f[k + 1][j] + abs(x[i][k] - x[k + 1][j]) + abs(y[i][k] - y[k + 1][j]);
if(w < f[i][j]) f[i][j] = w, s[i][j] = k;
}
}
}
printf("%lld\n", f[1][n] + x[1][n] + y[1][n]);
return 0;
}