tien_noob

Rectangle Cutting ( CSES )

Feb 20th, 2021 (edited)
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 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. int a, b, dp[501][501];
  10. void read()
  11. {
  12.    cin >> a >> b;
  13. }
  14. void Minimize(int & a, int b)
  15. {
  16.     a = min(a, b);
  17. }
  18. void solve()
  19. {
  20.    for (int i = 1; i <= a; ++ i)
  21.    {
  22.        for (int j = 1; j <= b; ++ j)
  23.        {
  24.            if ( i == j)
  25.            {
  26.                dp[i][j] = 0;
  27.            }
  28.            else
  29.            {
  30.                dp[i][j] = 1e9;
  31.                for (int k = 1; k < i; ++ k)
  32.                {
  33.                    Minimize(dp[i][j], dp[i-k][j] + dp[k][j] + 1);
  34.                }
  35.                for (int k = 1; k < j; ++ k)
  36.                {
  37.                    Minimize(dp[i][j], dp[i][j - k] + dp[i][k] + 1);
  38.                }
  39.            }
  40.        }
  41.    }
  42.    cout << dp[a][b];
  43. }
  44. int main()
  45. {
  46.     ios_base::sync_with_stdio(false);
  47.     cin.tie(nullptr);
  48.     read();
  49.     solve();
  50. }
  51. // dp[i][j] số đường cắt nhỏ nhất xét tới ô i j
Add Comment
Please, Sign In to add comment