bzoj1195 HNOI2006 最短母串

2021-08-04 23:45:22 字數 1133 閱讀 5642

此題似乎是乙個dp。。

dp[i][j]表示選了i這個集合的字串,最後乙個是j的最短字串。

(字典序順便搞定)

然後發現需要處理掉一串為另一串子串的情況,特判一些特殊情況(或者奇怪的姿勢)就好了。。

這題很卡空間,請務必不要亂開陣列。

#include 

#define gc getchar()

using namespace std;

int n,len[13],len[13];

intlength[4096][13],same[13][13],m,pd[13];

char a[13][51],b[13][51],dp[4096][13][601],now[601],ans[601];

intread()

int main()

if (f)}}

if (flag)

else pd[i]=1;

}memset(length,0x3f3f3f,sizeof(length));

for (int i=1;i<=m;i++)

for (int i=1;i<=m;i++)

for (int j=1;j<=m;j++)

if (flag)}}

for (int

last=1;last

<(1

if (!(last&(1

<<(i-1))))

for (int j=1;j<=m;j++)

if (last&(1

<<(j-1)))

if (length[last][j]+len[i]-same[i][j]}

int min_length=601;

for (int i=1;i<=m;i++)

if (length[(1

<

ans[j]=dp[(1

<}

}for (int i=1;i<=min_length;i++)

putchar(ans[i]);

puts("");

return

0;}

BZOJ 1195 HNOI2006 最短母串

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

BZOJ1195 HNOI2006 最短母串

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

BZOJ 1195 HNOI2006 最短母串

time limit 10 sec memory limit 32 mb submit 1346 solved 450 submit status discuss 給定n個字串 s1,s2,sn 要求找到乙個最短的字串t,使得這n個字串 s1,s2,sn 都是t的子串。第一行是乙個正整數n n 12...