QOJ.ac
QOJ
ID | Submission ID | Problem | Hacker | Owner | Result | Submit time | Judge time |
---|---|---|---|---|---|---|---|
#1515 | #882534 | #9879. ReTravel | rbtree | guosoun | Failed. | 2025-02-05 09:08:09 | 2025-02-05 09:08:09 |
Details
Extra Test:
Accepted
time: 0ms
memory: 3584kb
input:
3 4 3 4 3 4 3
output:
7
result:
ok "7"
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#882534 | #9879. ReTravel | guosoun | AC ✓ | 77ms | 7296kb | C++17 | 1.1kb | 2025-02-05 09:01:58 | 2025-02-05 09:01:59 |
answer
#include <bits/stdc++.h>
template <class T>
void chkmin(T &x, const T &y) {
if (x > y) x = y;
}
template <class T>
using V = std::vector<T>;
using ll = long long;
int main() {
std::cin.tie(0)->sync_with_stdio(0);
int n;
std::cin >> n;
V<int> x(n), y(n);
V<V<int>> mix(n, V<int>(n, 1e9)), miy = mix;
for (int i = 0; i < n; i++) std::cin >> x[i] >> y[i];
for (int i = 0; i < n; i++) {
mix[i][i] = x[i], miy[i][i] = y[i];
for (int j = i + 1; j < n; j++) {
mix[i][j] = std::min(mix[i][j - 1], x[j]);
miy[i][j] = std::min(miy[i][j - 1], y[j]);
}
}
V<V<ll>> dp(n, V<ll>(n));
for (int l = n - 1; l >= 0; l--)
for (int r = l; r < n; r++)
if (l == r) dp[l][r] = 0;
else {
dp[l][r] = 1e18;
int x1 = mix[l][r], y1 = miy[l][r];
for (int k = l; k < r; k++) {
int x2 = mix[l][k], y2 = miy[l][k];
int x3 = mix[k + 1][r], y3 = miy[k + 1][r];
chkmin(dp[l][r], dp[l][k] + dp[k + 1][r] + x2 - x1 + y2 - y1 + x3 - x1 + y3 - y1);
}
}
std::cout << dp[0][n - 1] + mix[0][n - 1] + miy[0][n - 1] << '\n';
}