Thứ Tư, 20 tháng 1, 2016

[Quy hoạch động] [SPOJ] COUNTPL

Đề bài
Hướng làm
Bước 1:
Tham khảo Nguyễn Hoành Tiến, đã sửa lại cho đúng
Dùng mảng F[i, j] có ý nghĩa: F[i, j] = true/false nếu đoạn gồm các kí tự từ i đến j của S có/không là palindrome.
Ta có công thức là:
F[i, i] = True
F[i, j] = (F[i+1, j-1] or (j-i=1)) ( nếu Si = Sj )
F[i, j] = False; ( nếu Si <> Sj )
Bước 2:
Gọi dp[i] là kết quả nếu chỉ xét xâu s[1..i].
Ta có dp[i]=dp[j-1]+1 với dp[j-1] nhỏ nhất và thỏa mãn j<=i và f[j,i] (giống bài NKREZ)
Code

Nhãn: , ,

0 Nhận xét:

Đăng nhận xét

Đăng ký Đăng Nhận xét [Atom]

<< Trang chủ