POJ.2774.Long Long Message/SPOJ.1811.LCS(后綴數組 倍增)

題目鏈接 POJ2774
SPOJ1811 LCS - Longest Common Substring
比后綴自動機慢好多(廢話→_→)。

\(Description\)

求兩個字符串最長公共子串

\(Solution\)

任何一個子串一定是某個后綴的前綴
可以將兩個字符串拼在一起,中間用一個從未出現過的字符隔開,這樣ht[]的最大值就是答案?
不一定,最大的ht[]可能是由同一個字符串得到的,判一下屬于哪個字符串即可

//3772K 516MS
//SPOJ:26M    0.11s(N=5e5)
#include <cstdio>
#include <cstring>
#include <algorithm>
const int N=2e5+10;int n,l,sa[N],rk[N],ht[N],sa2[N],tm[N];
char s[N];void Get_SA()
{int *x=rk,*y=sa2,m=30;for(int i=1; i<=n; ++i) ++tm[x[i]=s[i]-'a'+1];for(int i=1; i<=m; ++i) tm[i]+=tm[i-1];for(int i=n; i; --i) sa[tm[x[i]]--]=i;for(int p=0,k=1; k<n; m=p,p=0,k<<=1){for(int i=n-k+1; i<=n; ++i) y[++p]=i;for(int i=1; i<=n; ++i) if(sa[i]>k) y[++p]=sa[i]-k;for(int i=0; i<=m; ++i) tm[i]=0;for(int i=1; i<=n; ++i) ++tm[x[i]];for(int i=1; i<=m; ++i) tm[i]+=tm[i-1];for(int i=n; i; --i) sa[tm[x[y[i]]]--]=y[i];std::swap(x,y), p=x[sa[1]]=1;for(int i=2; i<=n; ++i)x[sa[i]]=y[sa[i-1]]==y[sa[i]]&&y[sa[i-1]+k]==y[sa[i]+k]?p:++p;if(p>=n) break;}for(int i=1; i<=n; ++i) rk[sa[i]]=i;ht[1]=0;for(int k=0,p,i=1; i<=n; ++i){if(rk[i]==1) continue;if(k) --k;p=sa[rk[i]-1];while(i+k<=n&&p+k<=n&&s[i+k]==s[p+k]) ++k;ht[rk[i]]=k;}
}int main()
{scanf("%s",s+1), l=strlen(s+1);s[l+1]='z'+1;scanf("%s",s+2+l), n=strlen(s+1);Get_SA();int res=0;for(int i=2; i<=n; ++i)if((sa[i]<=l)^(sa[i-1]<=l)) res=std::max(res,ht[i]);printf("%d",res);return 0;
}

轉載于:https://www.cnblogs.com/SovietPower/p/8569707.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280994.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280994.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280994.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

02.CSS基礎筆記及導入

CSS是什么 CSS&#xff08;Cascading Style Sheet&#xff0c;層疊樣式表)定義如何顯示HTML元素。 當瀏覽器讀到一個樣式表&#xff0c;它就會按照這個樣式表來對文檔進行格式化&#xff08;渲染&#xff09;。 CSS樣式 CSS引入HTML 內部樣式與外部樣式 <!DOCTYPE> …

如何還原桌面圖標_如何為Windows 10桌面圖標還原或更改文本的默認外觀?

如何還原桌面圖標For whatever reason, sooner or later we all have someone or something mess around with our keyboards and create ‘interesting’ results. With that in mind, today’s SuperUser Q&A post has a simple and elegant way to help a frustrated re…

「前端早讀君007」css進階之徹底理解視覺格式化模型

今日勵志 不論你在什么時候開始&#xff0c;重要的是開始之后不要停止。 前言 對于部分前端工程師來講&#xff0c;有時候CSS令他們很頭疼&#xff0c;明明設置了某個樣式&#xff0c;但是布局就是不起作用。 如果你也有這種問題&#xff0c;那么是時候學習下什么是css視覺格式…

.NET周報【11月第3期 2022-11-22】

國內文章.NET Conf China 2022 第一批講師陣容大揭秘&#xff01;整個期待了&#xff01;https://mp.weixin.qq.com/s/4p89hhBPw6qv-0OB_T_TOg目光看過來 2022 年 12 月 3-4 日&#xff0c;一場社區性質的國內規模最大的 線上線下.NET Conf 2022 技術大會 即將盛大開幕。目前大…

解讀Facebook CAN:如何給人工智能賦予藝術創作的力量

雷鋒網 AI 科技評論按&#xff1a;能夠迭代進化、模仿指定數據特征的GAN&#xff08;生成式對抗性網絡&#xff09;已經是公認的處理圖像生成問題的好方法&#xff0c;自從提出以來相關的研究成果不少&#xff0c;在圖像增強、超分辨率、風格轉換任務中的效果可謂是驚人的。 &a…

全向輪底盤磁導軌尋跡

全向輪底盤上安裝兩條磁傳感器帶用于磁導軌尋跡 如簡圖所示&#xff0c;兩條與Y直線相交的黑色線條我們認為是兩條磁檢測傳感器帶 矢量方法修正車體位置 定義軌道左為負向&#xff0c;軌道右為正向。傳感器左檢測為負&#xff0c;右檢測為正&#xff1b; 定義底盤坐標系為αβ&…

02-1.CSS邊框,邊界,布局相關筆記

目錄 CSS盒子模型 padding內填充 邊框 邊框屬性 border-radius margin外邊距 CSS盒子模型 Content(內容): 盒子的內容&#xff0c;顯示文本和圖像 >>>>類似word 文字A&#xff0c;改變字體與大小padding: 用于控制內容與邊框之間的距離 …

圖表庫

在2018年最后一天開源了自己的基于svg圖表庫mcharts 后面要大量時間去維護 mcharts 希望多提Issues 具體用法可以看文檔 可以一塊探討下技術問題 2019年新的開始新的起點 加油

android仿ios彈框_在“提示”框中:iOS外觀(在Android上運行),Google Maps作為Time Machine,下載Wii游戲保存...

android仿ios彈框Once a week we round up some great reader tips and share them with everyone. Read on to see how to make your Android phone look like iOS, use a Google Maps mashup like a time machine, and download Wii game saves. 每周一次&#xff0c;我們收集…

使用 C# 開發的摸魚背單詞軟件 ToastFish

你好&#xff0c;這里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;實用的工具和組件&#xff0c;希望對您有用&#xff01;摸魚神器ToastFish 是一個使用 C# 開發的桌面軟件&#xff0c;由 Uahh 開發&#xff0c; 這是一個利用Windows通知欄背單詞的軟件&…

使用log4Net 輸出日志到mongodb

將日志輸入到nosql 數據庫可以保證日志輸出速度和統一管理日志&#xff0c;log4mongo-net 項目http://log4mongo.org/display/PUB/Log4mongofor.NET使用log4net把日志保存到Mongodb。通常可用于代替log4netMS SSQL logging &#xff0c;和SQL Server相比可以節省40%的存儲空間&…

03.JavaScript對DOM操作

JavaScript引入方式 外部引入 在head或者body中&#xff0c;添加以下代碼 <script type"text/javascript" src"js/demo.js"></script> 內部引入 在head或body中&#xff0c;定義script標簽&#xff0c;然后在script標簽里面寫js代碼 <…

kotlin的suspend對比csharp的asyncawait

協程的出現大大降低了異步編程的復雜度&#xff0c;可以讓我們像寫同步代碼一樣去寫異步代碼&#xff0c;如果沒有它&#xff0c;那么很多異步的代碼都是需要靠回調函數來一層層嵌套&#xff0c;這個在我之前的一篇有介紹 rxjava回調地獄-kotlin協程來幫忙本篇文章主要介紹kotl…

file協議 控制面板_如何在Windows File Explorer導航窗格中顯示控制面板和回收站

file協議 控制面板By default, the Windows File Explorer’s sidebar is divided into big categories like Quick Access, This PC, Network, and so on. But a quick setting change can make your navigation pane look a bit more like the traditional tree you’d see i…

hdu-2612-Find a way(廣搜,bfs)

Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki. Yifenfei’s home is at the countryside, but Merceki’s home is in the center of city.…

過濾器(Filter)

1 什么是過濾器 過濾器JavaWeb三大組件之一&#xff0c;它與Servlet很相似&#xff01;不它過濾器是用來攔截請求的&#xff0c;而不是處理請求的。 當用戶請求某個Servlet時&#xff0c;會先執行部署在這個請求上的Filter&#xff0c;如果Filter“放行”&#xff0c;那么會繼…

03-1.JavaScript基礎語法略寫/模版字符串

基礎語法 參考前端基礎之JavaScript - Q1mi - 博客園 略寫原因 由于后續主要用jQuery編寫&#xff0c;jQuery簡化編程。大概了解JavaScript語法即可。 jQuery是一個輕量級的、兼容多瀏覽器的JavaScript庫。jQuery使用戶能夠更方便地處理HTML Document、Events、實現動畫效果…

發布適用于 .NET 7 的 .NET MAUI

點擊上方藍字關注我們&#xff08;本文閱讀時間&#xff1a;6分鐘)我們在六個月前向您介紹了 .NET 多平臺應用程序 UI (MAUI)&#xff0c;現在我們很高興地宣布 .NET MAUI 在我們的下一個主要版本 .NET 7 中普遍可用。在此短的時間范圍內&#xff0c;我們在 .NET MAUI 中的主要…

bzoj3160(FFT+回文自動機)

題目描述 https://www.lydsy.com/JudgeOnline/problem.php?id3160 題解 先把問題轉化一下&#xff0c;我們要求的是非連續對稱回文子序列。 ans回文子序列數-回文子串數。 回文子串數可以用PAM或manachar求出來。 復習了一下PAM&#xff0c;用它求回文子串數和SAM一樣&#xf…

03:數據結構 棧、隊列、鏈表與數組

算法其他篇 目錄&#xff1a; 1.1 數據結構中的一些概念1.2 棧&#xff08;stack&#xff09;1.3 隊列1.4 鏈表1.5 python中字典對象實現原理1.6 數組1.1 數據結構中的一些概念 返回頂部 1、數據結構是什么 1、簡單來說&#xff0c;數據結果就是設計數據以何種方式存儲在計…