IanisBelu

USACO 2021 February Gold. Modern Art 3

Oct 23rd, 2024 (edited)
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | Source Code | 0 0
  1. #pragma GCC optimize("Ofast")
  2. #include <bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6. #ifndef LOCAL
  7. #define endl '\n'
  8. #endif
  9.  
  10. const int NMAX = 305;
  11. const int MOD = 1e9+7;
  12.  
  13. int n;
  14. int a[NMAX];
  15. int dp[NMAX][NMAX];
  16.  
  17. void read() {
  18.    cin >> n;
  19.    for (int i = 1; i <= n; i++) {
  20.       cin >> a[i];
  21.       if (a[i] == a[i - 1]) {
  22.          i--;
  23.          n--;
  24.       }
  25.    }
  26. }
  27.  
  28. int solve() {
  29.    for (int len = 1; len <= n; len++) {
  30.       for (int l = 1; l + len - 1 <= n; l++) {
  31.          int r = l + len - 1;
  32.  
  33.          if (len == 1) {
  34.             dp[l][l] = 1;
  35.             continue;
  36.          }
  37.  
  38.          dp[l][r] = NMAX;
  39.          for (int k = l + 1; k <= r; k++) {
  40.             dp[l][r] = min(dp[l][r], dp[l][k - 1] + dp[k][r] - (a[l] == a[k]));
  41.          }
  42.       }
  43.    }
  44.  
  45.    return dp[1][n];
  46. }
  47.  
  48. signed main() {
  49. #ifdef LOCAL
  50.    freopen("input.txt", "r", stdin);
  51. #endif
  52.    ios_base::sync_with_stdio(false);
  53.    cin.tie(0);
  54.    cout.tie(0);
  55.  
  56.    read();
  57.    cout << solve() << endl;
  58.  
  59.    return 0;
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment