題意:求最長的回文串。 思路:同樣是用Mancher算法在O(n)的時間內解決(我其實是來練練板子的
#include #include #include #include #include #include #include #include #include #include #include #pragma comment(linker, /STACK:102400000,102400000) using namespace std; typedef long long LL; const int inf=0x3f3f3f3f; const double pi= acos(-1.0); const double esp=1e-6; const int maxn=1000010; char str[maxn]; char s[maxn*2]; int p[maxn*2]; int len; void Manacher() { int i; s[0]='$'; s[1]='#'; for(i=0;ii) p[i]=min(p[2*id-i],p[id]+id-i); else p[i]=1; while(s[i+p[i]]==s[i-p[i]]) p[i]++; if(p[i]+i>p[id]+id) { id=i; } if(p[i]>MaxL) MaxL=p[i]; } printf(%d ,MaxL-1); } int main() { int icase=1; while(~scanf(%s,&str)) { if(strcmp(str,END)==0) break; len=strlen(str); printf(Case %d: ,icase++); Manacher(); } return 0; }
歸並排序(MergeSort) 和分治思想的第一次相遇
樹的判定 時間限制:1000 ms | 內存限制
C++Builder編寫計算器,builder編寫計算器用C
C++設計模式之組合模式講解 C++設計模式之組合模式
[cpp] 01.01./* &
現在可用的C++編譯器實現已經很豐富了,在Windows平