DuongNhi99

PALINCROSS (lqdoj)

Mar 11th, 2022
721
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define x1 sdvksvkdslvlksdv
  4. #define x2 sdjvdsvdbdfbfbrr
  5. #define y1 sdvddfbsgrebdsvd
  6. #define y2 sjdvsdvsdbdfbfbb
  7. #define rep(i, a, b) for(int i = a; i < (b); ++i)
  8. #define all(x) begin(x), end(x)
  9. #define sz(x) (int)(x).size()
  10. typedef long long ll;
  11. typedef pair<int, int> pii;
  12. typedef vector<int> vi;
  13. int n, m;
  14. char a[50][50];
  15. int dp[50][50][50][50];
  16. int mx1[2] = {0,-1};
  17. int my1[2] = {-1,0};
  18. int mx2[2] = {0,1};
  19. int my2[2] = {1,0};
  20.  
  21. bool ok(int x,int y) {
  22.     return 0<=x && x<n && 0<=y && y<n;
  23. }
  24.  
  25. int caldp(int x1,int y1,int x2,int y2) {
  26. #define STATE x1][y1][x2][y2
  27.     if (dp[STATE]!=-1) return dp[STATE];
  28.  
  29.     int curLength = (tie(x1,y1)==tie(x2,y2)) ? 1 : 2;
  30.    
  31.     dp[STATE] = curLength;
  32.     rep(i,0,2) rep(j,0,2) {
  33.         int nx1 = x1 + mx1[i], ny1 = y1 + my1[i];
  34.         int nx2 = x2 + mx2[j], ny2 = y2 + my2[j];
  35.         if (ok(nx1, ny1) and ok(nx2, ny2) and a[nx1][ny1] == a[nx2][ny2]) dp[STATE] = max(dp[STATE], caldp(nx1,ny1,nx2,ny2) + curLength);
  36.     }
  37.  
  38.     return dp[STATE];
  39.  
  40. }
  41. int main() {
  42.     cin.tie(0)->sync_with_stdio(0);
  43.     cin.exceptions(cin.failbit);
  44.     cin >> n;
  45.     rep(i,0,n) rep(j,0,n) cin >> a[i][j];
  46.     memset(dp,-1,sizeof(dp));
  47.  
  48.     int res = 0;
  49.     rep(i,0,n) rep(j,0,n) res = max(res, caldp(i,j,i,j));
  50.     //cout << res << '\n';
  51.     rep(i,0,n) rep(j,0,n) {
  52.         if (i+1<n and a[i][j]==a[i+1][j]) res = max(res, caldp(i,j,i+1,j));
  53.         if (j+1<n and a[i][j]==a[i][j+1]) res = max(res, caldp(i,j,i,j+1));
  54.     }
  55.     cout << res;
  56. }
  57.  
  58.  
Advertisement
Add Comment
Please, Sign In to add comment