Palindrome dài nhất

View as PDF

Submit solution


Points: 0.29 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Problem source:
Nguyễn Hoành Tiến
Problem types
Allowed languages
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho xâu ~S~.

Tìm độ dài của xâu con (liên tiếp) đối xứng dài nhất.

Input

Dòng ~1~: Số nguyên dương ~N \leq 5 \times 10^4~.

Dòng ~2~: Xâu ký tự độ dài ~N~.

Output

1 dòng duy nhất gồm độ dài của xâu con đối xứng dài nhất.

Sample Input

5
abacd

Sample Output

3

Comments

Please read the guidelines before commenting.



  • -2
    hoangquys  commented on Jan. 7, 2026, 2:47 p.m.

    Bài này O(N^2) vẫn AC nhé, solution khác là có thể dùng sliding window để làm bài này


  • 3
    dotuankiet18072008  commented on Jan. 1, 2026, 12:52 a.m. edit 2

    * Mình xin góp 1 ý tưởng cho những bài chưa nghĩ ra cách full ạ*

    • Ta sẽ chia bài toán thành 2 trường hợp đó là xâu đối xứng CHẴN và xâu đối xứng LẺ
    • Đông thời ta có một số nhận xét về xâu đối xứng như : nếu xâu đối xứng có độ dài L thì có thể không có xâu đối xứng L+2 tuy nhiên nếu ta có xâu đối xứng L + 2 thì chắc chắn việc ta có xâu đối xứng độ dài L
    • Ta xoáy sâu vào đó để đưa ra cách tìm kiếm nhị phân
    • * TH1 :xâu độ dài lẻ* ta xây dựng 1 vector để lưu các độ dài lẻ mà xâu S có thể xảy ra ví dụ như test đề bài abacd (5) thì mảng a[] = {1, 3, 5} rồi ta bắt đầu chặt nhị phân l = 0, r = a.size() - 1; và mid = (l+r)/2 sau đó kiểm tra ok(a[mid]) rồi cập nhật các giá trị để thực hiện chặt
    • ok[a[mid]] kiểm tra xem xâu s có xâu đối xứng nào có độ dài a[mid] ko
    • * TH2 xâu độ dài chẵn* ta là tương tự như TH1 nhưng mảng lưu trữu độ dài chẵn có thể xảy ra và làm tương tự như TH1 ạ
    • *Và mình có 1 số lưu ý cho các bạn về 1 số TH bị RTE : *
    • nên khai báo các biến như int n; string s.... ở ngoài hàm int main() ạ bởi nếu khai báo ở trong có thể bị RTE test cuối ạ
    • Cảm Ơn mọi người đã tham khảo ạ. Còn code mình xin phép ko gửi ạ bởi mình mong những bạn tham khảo ý tưởng của mình nếu có hứng thú thì có thể tự code mà không bị phụ thuộc vào bên ngoài ạ

  • -3
    vominhmanh10  commented on Nov. 9, 2025, 3:43 a.m.

    xâu đối xứng dùng manacher

    import sys
    input = sys.stdin.readline
    
    def palin():
        l = 0
        r = -1
        for i in range(n):
            if i <= r: odd[i] = min(r - i, odd[l + r - i])
            while i - odd[i] - 1 >= 0 and i + odd[i] + 1 < n and s[i - odd[i] - 1] == s[i + odd[i] + 1]:
                odd[i] += 1
            if i + odd[i] > r:
                l, r = i - odd[i], i + odd[i]
        l, r = 0, -1
        for i in range(n - 1):
            j = i + 1
            if j <= r: even[i] = min(r - i, even[l + r - j])
            while i - even[i] >= 0 and j + even[i] < n and s[i - even[i]] == s[j + even[i]]:
                even[i] += 1
            if i + even[i] > r:
                l, r = j - even[i], i + even[i]
        return max(max(odd) * 2 + 1, max(even) * 2)
    
    
    n = int(input())
    s = input().strip()
    odd = [0] * n
    even = [0] * n
    print(palin())
    

  • 2
    luuthanhdatbienhoak66  commented on Sept. 11, 2025, 2:04 p.m.

    =))

    https://ideone.com/wBFzlC


  • -3
    Hugcodega  commented on June 17, 2025, 1:44 p.m. edited
    • Hash + chặt nhị phân là ac

  • -42
    tandochuyentin2022  commented on Feb. 19, 2025, 1:46 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • 3
    HeroMinhSteve  commented on Jan. 27, 2025, 3:28 p.m.

    Gợi ý

    Cài MANACHER là ra


  • -7
    phanthien10r  commented on Sept. 3, 2024, 5:27 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -1
    winky  commented on Sept. 2, 2024, 8:11 a.m.

    bài này có ver2 không ạ em code O(n^2) vẫn AC ;-;


    • 5
      dienthan901  commented on Feb. 17, 2025, 2:52 p.m.

      chắc test yếu, ô cứ đắp 10^6 chữ a là ok (")>


    • -1
      dienthan901  commented on Feb. 17, 2025, 2:52 p.m.

      chắc test yếu, ô cứ đắp 10^6 chữ a là ok (")>


  • -13
    DongDuc08  commented on Aug. 20, 2024, 8:53 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -10
    Huy_inIT  commented on July 24, 2024, 3:07 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -3
    pndhpndh  commented on June 16, 2024, 3:43 a.m.

    hihi


  • -7
    chunguyen2k8  commented on May 14, 2024, 12:18 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -5
    vantien1526  commented on Aug. 31, 2023, 3:25 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


    • 1
      normankr07  commented on Sept. 3, 2023, 4:23 a.m.

      Tại hàm độ dài max không đơn điệu ý bạn, phải cnp các độ dài chẵn riêng và lẻ riêng Bài này bạn có thể làm bằng manacher, mình thấy dễ hơn, tài liệu thì ở đây: https://vnoi.info/wiki/algo/string/manacher.md


  • 1
    niahauma  commented on May 15, 2023, 11:01 a.m.

    cho mình hỏi tại sao phải chặt nhị phân chẳn lẻ thế ạ


    • -8
      quocdev2009  commented on May 14, 2024, 7:29 a.m.

      This comment is hidden due to too much negative feedback. Show it anyway.


      • -5
        Vinhzn08  commented on July 5, 2024, 5:10 p.m.

        This comment is hidden due to too much negative feedback. Show it anyway.


    • -6
      y  commented on May 15, 2023, 11:45 a.m.

      This comment is hidden due to too much negative feedback. Show it anyway.


  • -3
    YOASOBI  commented on Feb. 3, 2023, 1:37 a.m.

    Hash base 31 AC được nè :V


    • -4
      mt1234  commented on May 18, 2023, 5:50 a.m.

      Code kiểu j v :>>


  • -7
    dasher  commented on Jan. 27, 2023, 4:53 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -10
    tboros2  commented on Dec. 31, 2022, 12:26 p.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -28
    kh0i  commented on June 20, 2022, 6:19 a.m. edited

    This comment is hidden due to too much negative feedback. Show it anyway.


  • 61
    darkkcyan  commented on Nov. 3, 2021, 9:31 p.m.

    Cảm ơn bạn PPAP_1264589 đã đóng góp 3 test khá mạnh cho bộ test của bài này <3. Mình đã rejudge lại toàn bộ submission AC và lần này không chỉ có một vài mà lên đến khoảng 70 submissions đã mất AC :(.


    • -13
      tboros2  commented on Dec. 30, 2022, 11:34 a.m.

      This comment is hidden due to too much negative feedback. Show it anyway.


  • 65
    I_love_Hoang_Yen  commented on Aug. 23, 2021, 11:25 a.m.

    Mình vừa thêm 1 test do bạn manhtranVN đóng góp, và có vài submission đã mất AC.