洛谷P3805 【模板】manacher演算法
#include<bits/stdc++.h>
using namespace std;
const int N=11000002;
int i,j,ans,k,rad[N<<1],len;
char s[N<<1],s1[N];
int main(){
scanf("%s",s1+1),len=strlen(s1+1);
for (i=1;i<=len;i++) s[i*2-1]=s1[i],s[i*2-2]='#';
len=len*2+1;
s[len-1]='#';
for (i=0,j=0;i<len;i+=k){
while (i-j-1>=0 && s[i-j-1]==s[i+j+1]) j++;
rad[i]=j,ans=max(ans,j);
for (k=1;k<=j && rad[i]-k!=rad[i-k];k++) rad[i+k]=min(rad[i]-k,rad[i-k]);
j=max(j-k,0);
}
printf("%d",ans);
}
相關推薦
洛谷P3805 【模板】manacher演算法
題目 題解 #include<bits/stdc++.h> using namespace std; const int N=11000002; int i,j,ans,k,rad[N<<1],len; char s[N<<1],s1[N]; int
[洛谷P3805]【模板】manacher算法
true main 一個 cstring man return nac 復雜 class 題目大意:給你一個字符串(長度≤11000000),叫你求這個串的最長回文子串長度。 解題思路:Manacher算法模板題,可以在$O(n)$的時間復雜度裏求出一個串的最長回文
【模板·manacher】 洛谷 P3805 【模板】manacher
思路:模板題 程式碼: #include<bits/stdc++.h> using namespace std; #define maxn 22000000 char b[maxn+5
洛谷P3805 【模板】manacher算法
name 字符串 man 算法 模板 一行 const names 輸入輸出 題目描述 給出一個只由小寫英文字符a,b,c...y,z組成的字符串S,求S中最長回文串的長度 輸入輸出格式 輸入格式: 一行小寫英文字符a,b,c...y,z組成的字符串S 輸出格式: 一個整數
[洛谷3373]【模板】線段樹 2
兩個 cstring tchar int() 維護 string max nbsp 線段 思路: 線段樹。同時維護兩個 lazy tag ,一個維護乘,一個維護加。根據加法結合律,可以得出:當同一個結點進行兩次加操作時,新的標記等於兩次標記之和。根據乘法結合律,可以得出:
洛谷—— P3386 【模板】二分圖匹配
blank lan print 一個 dfs com 二分 i++ bool https://www.luogu.org/problem/show?pid=3386 題目背景 二分圖 題目描述 給定一個二分圖,結點個數分別為n,m,邊數為e,求二分圖最大匹配數 輸
洛谷——P3370 【模板】字符串哈希
大小寫 100% max algorithm () problem pri node pan 題目描述 如題,給定N個字符串(第i個字符串長度為Mi,字符串內包含數字、大小寫字母,大小寫敏感),請求出N個字符串中共有多少個不同的字符串。 友情提醒:如果真的想好好練習哈希
三分法(洛谷3382 【模板】三分法)
printf log 含義 三分 tps ans 區間 bits int 如題,給出一個N次函數,保證在範圍[l,r]內存在一點x,使得[l,x]上單調增,[x,r]上單調減。試求出x的值。 輸入格式: 第一行一次包含一個正整數N和兩個實數l、r,含義如題目描述所示。
[洛谷3366]【模板】最小生成樹
fine nds first 最小 fin print kruskal += sca 思路:Kruskal 1 #include<cstdio> 2 #include<utility> 3 #include<algorithm&
洛谷P3385 【模板】負環 DFS-SPFA 判負環 圖論
string inf scan space can 清空 span %d pre 洛谷P3385 【模板】負環 圖論 今天get了 一個 DFS-SPFA 判負環的方法 一般的 BFS-SPFA 判負環 一般就是 不停地做,如果某點第 n+1次加入隊列中,那麽說明這個圖存在
洛谷——P3384 【模板】樹鏈剖分
upload mes 事情 -- aliyun pro 格式 路徑 sca https://www.luogu.org/problem/show?pid=3384#sub 題目描述 如題,已知一棵包含N個結點的樹(連通且無環),每個節點上包含一個數值,需要支持以下操作:
洛谷 P3367 【模板】並查集
ret stream pri amp 是的 color div -a std 題目描述 如題,現在有一個並查集,你需要完成合並和查詢操作。 輸入輸出格式 輸入格式: 第一行包含兩個整數N、M,表示共有N個元素和M個操作。 接下來M行,每行包含三個整數Zi、Xi
洛谷 P3390 【模板】矩陣快速冪
算法 ons int void printf cst getchar show 輸出格式 題目背景 矩陣快速冪 題目描述 給定n*n的矩陣A,求A^k 輸入輸出格式 輸入格式: 第一行,n,k 第2至n+1行,每行n個數,第i+1行第j個數表示矩陣第i行
[洛谷3381]【模板】最小費用最大流
main 最小費用最大流 spf 最大流模板題 rem digi span mem spfa 思路:最小費用最大流模板題。用EdmondsKarp,增廣時使用SPFA求最短路。 1 #include<queue> 2 #include<cstd
[洛谷P3381]【模板】最小費用最大流
code main sdi span printf fast tdi nbsp optimize 題目大意:給出一個網絡圖,以及其源點和匯點,每條邊已知其最大流量和單位流量費用,求出其網絡最大流和在最大流情況下的最小費用。 解題思路:最小費用最大流模板。雖說此題最後兩個點
洛谷——P3807 【模板】盧卡斯定理
|| turn thml 數據 mod text clu -h eset P3807 【模板】盧卡斯定理 題目背景 這是一道模板題。 題目描述 給定n,m,p(1\le n,m,p\le 10^51≤n,m,p≤10?5??) 求 C_{n+m}^{m
洛谷—— P3385 【模板】負環
next i++ bre 表示 一個 ace amp 存在 algo 題目描述 暴力枚舉/SPFA/Bellman-ford/奇怪的貪心/超神搜索 輸入輸出格式 輸入格式: 第一行一個正整數T表示數據組數,對於每組數據: 第一行兩個正整數N M,表示圖有N個
洛谷P3388 【模板】割點(割頂)
span iostream 模板 pri add ++ 割點 logs () 表示割點模板很難理解。。。。但是呢,可以將整個圖用深搜來一步步遞歸。。 dfn[x]<=low[tmp] && x!=mr的點就++;完畢。。。。PS:小心第一個節點。。。
洛谷 P3388 【模板】割點(割頂)
tex def its next set clas pro != bit P3388 【模板】割點(割頂) 題目背景 割點 題目描述 給出一個n個點,m條邊的無向圖,求圖的割點。 輸入輸出格式 輸入格式: 第一行輸入n,m 下面m行每行輸入x,y表示x
洛谷 P3374 【模板】樹狀數組 1 題解
數字 pri getchar 說明 using 完全 ace getc ret 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=3374 題目描述 如題,