Advertisement
tien_noob

Camp ( LQDOJ )

Feb 21st, 2021
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <numeric>
  5. #include <cmath>
  6. #include <climits>
  7. #include <queue>
  8. using namespace std;
  9. const int N = 1e3, INF = 2e9;
  10. struct T
  11. {
  12.     int x, y;
  13. };
  14. T a[N+1], b[N+1];
  15. int n, dp[N+1][N+1][2], m;
  16. int dis (const T & q, const T & u)
  17. {
  18.     return (q.x - u.x)*(q.x - u.x) + (q.y - u.y)*(q.y - u.y);
  19. }
  20. void read()
  21. {
  22.    cin >> n >> m;
  23.    for (int i = 1; i <= n; ++ i)
  24.    {
  25.        cin >> a[i].x >> a[i].y;
  26.    }
  27.    for (int i = 1; i <= m; ++ i)
  28.    {
  29.        cin >> b[i].x >> b[i].y;
  30.    }
  31.    for (int i = 0; i <= n; ++ i)
  32.    {
  33.        for (int j = 0; j <= m; ++ j)
  34.        {
  35.            dp[i][j][0] = INF;
  36.            dp[i][j][1] = INF;
  37.        }
  38.    }
  39. }
  40. void Minimize(int & a, int b)
  41. {
  42.     a = min(a, b);
  43. }
  44. void solve()
  45. {
  46.    dp[1][0][0] = 0;
  47.    dp[1][1][1] = dis(a[1], b[1]);
  48.    for (int j = 2; j <= m; ++ j)
  49.    {
  50.        dp[1][j][1] = dp[1][j-1][1] + dis(b[j], b[j - 1]);
  51.    }
  52.    for (int i = 2; i <= n; ++ i)
  53.    {
  54.        dp[i][0][0] = dp[i-1][0][0] + dis(a[i], a[i-1]);
  55.    }
  56.    for (int i = 1; i <= n; ++ i)
  57.    {
  58.        for (int j = 1; j <= m; ++ j)
  59.        {
  60.            Minimize(dp[i][j][0], dp[i-1][j][0] + dis(a[i], a[i-1]));
  61.            Minimize(dp[i][j][0], dp[i-1][j][1] + dis(b[j], a[i]));
  62.            Minimize(dp[i][j][1], dp[i][j-1][1] + dis(b[j], b[j-1]));
  63.            Minimize(dp[i][j][1], dp[i][j-1][0] + dis(a[i], b[j]));
  64.        }
  65.    }
  66.    cout << dp[n][m][0];
  67. }
  68. int main()
  69. {
  70.     ios_base::sync_with_stdio(false);
  71.     cin.tie(nullptr);
  72.     read();
  73.     solve();
  74. }
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement