CSES - Longest Palindrome | Xâu đối xứng dài nhất

Xem PDF



Tác giả:
Dạng bài
Điểm: 1800 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Cho một xâu, nhiệm vụ của bạn là xác định xâu con đổi xứng dài nhất của xâu. Ví dụ, xâu đối xứng dài nhất trong aybabtubab.

Input

  • Dòng đầu vào duy nhất chứa một chuỗi độ dài \(n\). Mỗi kí tự là một trong những a - z.

Output

  • In xâu đối xứng dài nhất trong xâu. Nếu có một số đáp án, bạn có thể in bất kỳ đáp án nào trong số đó.

Constraints

  • \(1 \leq n \leq 10^6\)

Example

Test 1

Input

aybabtu

Output

bab


Bình luận


  • 2
    v2manhvcl    9:55 p.m. 18 Tháng 2, 2024

    include<bits/stdc++.h>

    using namespace std;

    define ll long long

    ll a[1000][1000];

    int main() {
    string s;
    cin >> s;
    ll ans = 0;
    ll y = 0, p = 0;

    for (ll len = 2; len <= s.size(); len++) {
        for (ll i = 0; i < s.size() - len + 1; i++) {
            ll j = i + len - 1;
    
            if (len == 2 || len == 3) {
                if(s[i]==s[j]) a[i][j]=1;
            } else {
                if(s[i] == s[j] && a[i + 1][j - 1] == 1) a[i][j]=1;
            }
    
            if (j - i + 1 > ans && a[i][j] == 1) {
                y = i;
                p = j;
                ans = j - i + 1;
            }
        }
    }
    
    cout << s.substr(y, ans);
    
    return 0;
    

    }
    em dùng qhđ bị runtime error , ai cíu em với :(. cảm ơn mng ạ


    • 2
      mt_chain    9:53 p.m. 17 Tháng 5, 2023

      Hash + two pointer có AC k nhỉ

      1 phản hồi

      • 0
        hungnt    4:29 p.m. 28 Tháng 11, 2022 đã chỉnh sửa

        Bài này mình làm bằng hash không hiểu sao sai mất 1 test


        • 0
          dang7rickroll    3:26 p.m. 18 Tháng 9, 2022 đã chỉnh sửa
          **Hint**

          $Manacher's$ $Algorithm$

          1 phản hồi