十二省聯考 字串問題

2021-09-17 03:22:12 字數 1507 閱讀 6960

傳送門

顯然是建圖跑最長路一類的問題,我們需要將

字尾樹上對於點

而構造目標串的過程是:先選擇乙個

那麼隨便怎麼建一下圖就可以了。

至於構造的目標串能否無限長,只需要看建出的圖有沒有環即可。

務必用拓撲排序實現。spfa只有暴力分

code_by_uselessname

#pragma g++ optimize(2)

#pragma gcc optimize(2)

#include#include#include#include#include#include#include#define get getchar()

#define ll long long

using namespace std;

namespace fastio

while('0'<=t&&t<='9')

return s*f; }}

using fastio::read;

const int n=200005;

const int m=2000005;

const int an=400005;

const int am=26;

const int lim=19;

int n,na,nb,tot,bac[an];

ll dp[m];

int ina[n],outa[n],inb[n],outb[n];

int prt[an][20];

struct node;

bool cmp(node a,node b)

vectorinf[an];

namespace suffixauto

void init()

void insert(int v,int _pos)

} }void topsort()

}using namespace suffixauto;

struct linel[m];

int h[m],lcnt,in[m];

void link(int u,int v,int w);h[u]=lcnt;in[v]++;

}int topsum;

void __topsort() }}

void buildgraph()

char s[n];

void clear()

for(int u=1;u<=tot;u++)h[u]=in[u]=dp[u]=0;

root=cnt=lcnt=tot=topsum=0;

}void solve());

} nb=read();

for(int i=1,l,r;i<=nb;i++));

} buildgraph();

__topsort();

if(topsum!=tot)cout<

else

clear();

}int main()

十二省聯考 2019 字串問題

以前寫完題後鴿了部落格,現在補一下。今天下午機房的人在大螢幕上一直掛著 ioi 的榜,關注亞塞拜然那邊的比賽情況,我本來是衷心祝願中國隊能有人阿克 day1 的 zzq?然而六點後回來發現只有班傑明阿克了 實際上他還是三小時就阿克了 中國隊最高的是 zzq 和俄羅斯的 300iq 好像是並列第三?可...

十二省聯考2019 字串問題

現有乙個字串 s tiffany 將從中劃出 n a 個子串作為 a 類串,第 i 個 1 leqslant i leqslant n a 為 a i s la i,ra i 類似地,yazid 將劃出 n b 個子串作為 b 類串,第 i 個 1 leqslant i leqslant n b 為...

十二省聯考2019 字串問題

首先,我們可以把題目轉變成這樣 對於一些a類串,其有連向某些b類串的邊 對於某些b類串,其又有連向某些a類串的邊。要你找出一條權值最長的路徑。此時顯然如果成環則答案一定是 1 a到b的串題目已經給出了,關鍵是b到a的串。我們發現,若某個 b 是 a 的字首,則 a 由 b 在後面新增字元得到,需要在...