bzoj1195 最短母串

2021-07-30 15:18:38 字數 529 閱讀 4918

1:練習了string類,string中查詢,找不到的話會返回 s.npos乙個變數,而不是返回一般的s.end();

2:這題還可以,ac自動機上狀壓bfs,找最短路,實際上是dp,但是轉移都是加1,所以可以抽象為邊長為一從起始狀態到最終狀態的最短路,因為為邊長1,又可以轉為bfs。

3:#include#include#include#include#include#include#includeusing namespace std;

const int inf=0x3f3f3f3f;

int n;

string s[15],tmp1,tmp2,tmp;

struct aa

f[(1<<12)+5][15];

int c[15][15],len[15];

bool b[15];

string get(int s,int j)

return tmp;

}int main()

} for (int i=0;i<(1else if (f[i|(1<

BZOJ 1195 HNOI2006 最短母串

一看字串就想到ac自動機是不是沒救了 然後決定在ac自動機上做分層圖最短路233333333 結果發現極限資料剛好卡時限了qaq 仔細一想好像每條邊的長度都是1哎。果斷bfs 其實dfs應該也可以的吧,而且可以剪枝。但是我有dfs恐懼症,於是果斷選擇了bfs。結果跑得奇慢無比。不談了我想靜靜 inc...

bzoj1195 HNOI2006 最短母串

此題似乎是乙個dp。dp i j 表示選了i這個集合的字串,最後乙個是j的最短字串。字典序順便搞定 然後發現需要處理掉一串為另一串子串的情況,特判一些特殊情況 或者奇怪的姿勢 就好了。這題很卡空間,請務必不要亂開陣列。include define gc getchar using namespace...

BZOJ1195 HNOI2006 最短母串

給定n個字串 s1,s2,sn 要求找到乙個最短的字串t,使得這n個字串 s1,s2,sn 都是t的子串。第一行是乙個正整數n n 12 表示給定的字串的個數。以下的n行,每行有乙個全由大寫字母組成的字串。每個字串的長度不超過50.只有一行,為找到的最短的字串t。在保證最短的前提下,如果有多個字串都...