bzoj2882 工藝(字尾自動機(最小表示法))

2021-08-13 16:37:05 字數 896 閱讀 8063

原題位址

題意:

小敏和小燕是一對好朋友。

他們正在玩一種神奇的遊戲,叫minecraft。

他們現在要做乙個由方塊構成的長條工藝品。但是方塊現在是亂的,而且由於機器的要求,他們只能做到把這個工藝品最左邊的方塊放到最右邊。

他們想,在僅這乙個操作下,最漂亮的工藝品能多漂亮。

兩個工藝品美觀的比較方法是,從頭開始比較,如果第i個位置上方塊不一樣那麼誰的瑕疵度小,那麼誰就更漂亮,如果一樣那麼繼續比較第i+1個方塊。如果全都一樣,那麼這兩個工藝品就一樣漂亮。

資料範圍

n<=300000

題解:

求乙個字串的最小表示。

把s複製一遍接在後面,對於這個新串建立sam,

於是從root開始走len次就是那個最小表示。

字符集很大用map。

等學了最小表示法再來upd一發。

**:

#include

#include

#include

#include

#include

using

namespace

std;

const

int n=600005;

struct node

tr[2*n+100];

int s[n],n,root=0,last=0,tail=0,tmp;

void add(int c)

}last=nd;

}void getans()

}int main()

bzoj 2882 工藝 (字尾自動機 map)

time limit 10 sec memory limit 128 mb submit 596 solved 266 submit status discuss 小敏和小燕是一對好朋友。他們正在玩一種神奇的遊戲,叫minecraft。他們現在要做乙個由方塊構成的長條工藝品。但是方塊現在是亂的,而且...

BZOJ 2882 工藝 字尾自動機 map

小敏和小燕是一對好朋友。他們正在玩一種神奇的遊戲,叫minecraft。他們現在要做乙個由方塊構成的長條工藝品。但是方塊現在是亂的,而且由於機器的要求,他們只能做到把這個工藝品最左邊的方塊放到最右邊。他們想,在僅這乙個操作下,最漂亮的工藝品能多漂亮。兩個工藝品美觀的比較方法是,從頭開始比較,如果第i...

BZOJ 2882 工藝 字尾自動機 map

小敏和小燕是一對好朋友。他們正在玩一種神奇的遊戲,叫minecraft。他們現在要做乙個由方塊構成的長條工藝品。但是方塊現在是亂的,而且由於機器的要求,他們只能做到把這個工藝品最左邊的方塊放到最右邊。他們想,在僅這乙個操作下,最漂亮的工藝品能多漂亮。兩個工藝品美觀的比較方法是,從頭開始比較,如果第i...