類似於kmp的思想,利用已經匹配的資訊計算未匹配的資訊。
基本原理就是:我們將f[i]定義為以i為中心的最長回文串長度。那麼如果有f[5]=7,f[4]=3, 那麼我們可以得到f[6] >=3.以此來減少比較次數。當然還有一些細節要處理。比如回文串長度的奇偶性。
這個是我自己寫的版本,不是很精簡。
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int mod = 1e9 + 7;
const
int inf = 0x7fffffff;
const
int n = 2e6 + 10;
char org[n]; // 初始字串
char str[n]; // 預處理後字串
int f[n]; // 以i為中心的最長回文串長度
int expand(int i, int j, int n)
int solve()
str[len] = 0;
int ans = 1;
int mostright = 0, flag = 0;
for(int i = 0; i < len ; i++)
ans = max(ans, f[i] / 2);
}return ans;
}int main()
return
0;}
hiho一下第一周 最長回文子串
時間限制 1000ms 單點時限 1000ms 記憶體限制 256mb 小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。這一天,他們遇到了一連串的字串,於是小hi 就向小ho 提出了那個經典的問題 小ho 你能不能分別...
hiho一下 第一周(最長回文子串)
時間限制 1000ms 單點時限 1000ms 記憶體限制 64mb 小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。這一天,他們遇到了一連串的字串,於是小hi就向小ho提出了那個經典的問題 小ho,你能不能分別在這些...
hiho一下 第一周
題目名稱 最長回文子串 小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。這一天,他們遇到了一連串的字串,於是小hi 就向小ho 提出了那個經典的問題 小ho 你能不能分別在這些字串中找到它們每乙個的最長回文子串呢?小h...