這個題n<=15,可以用10表示選取情況下的最優值
預處理兩個串之間的連線關係,然後列舉狀態轉移
然而這個題還要輸出方案,,而且還不讓你開空間。
所以只能記錄前繼動態判斷、、
所以十分難寫難調
碼:#include#include#includeusing namespace std;
int n,i,j,k,l,lin[15],g1[16385][15],g2[16385][15],er[15],daan2[15],p;
long long f[16385][15],lj[16][16],ans=2147483647,len[15];
char str[15][60],daan[800],lin3[800];
bool wu[15];
int main()
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(l>len[i])wu[i]=1;
}
}int cnt=0;
for(i=1;i<=n;i++)
n=cnt;
for(i=1;i<=n;i++)//最長延伸(第乙個串)
if(k+l-2==len[i])
}}
}er[0]=1;
for(i=1;i<=n;i++)
er[i]=er[i-1]*2;
for(i=1;i<=n;i++)
f[er[i-1]][i-1]=len[i],g1[er[i-1]][i-1]=-1;
for(i=1;i=1;l--)//倒著放字元
}for(l=lj[j+1][k+1]+1;l<=len[k+1];l++)
// for(int y=1;y<=lin4;y++)cout<=1;l--)
}// for(int y=1;y<=lin4;y++)cout}
if(huan)
}
if(f[i|er[k]][k]>f[i][j]+len[k+1]-lj[j+1][k+1])
}
}
}for(i=0;ilin3[j])
if(daan[j]
bzoj1195 最短母串
1 練習了string類,string中查詢,找不到的話會返回 s.npos乙個變數,而不是返回一般的s.end 2 這題還可以,ac自動機上狀壓bfs,找最短路,實際上是dp,但是轉移都是加1,所以可以抽象為邊長為一從起始狀態到最終狀態的最短路,因為為邊長1,又可以轉為bfs。3 include ...
習題 最短母串(狀壓)
題目 記憶體限制 512 mib時間限制 1000 ms標準輸入輸出 題目型別 傳統評測方式 文字比較 題目描述 給定n 個字串 要求找到乙個最短的字串 使得這 n個字串都是它 的子串。輸入格式 第一行是乙個正整數 表示給定的字串的個數 以下的 n 1 行,每行有乙個全由大寫字母組成的字串。輸出格式...
loj10061 最短母串
記憶體限制 512 mib 時間限制 1000 ms 標準輸入輸出 題目型別 傳統 評測方式 文字比較 上傳者 1bentong 提交提交記錄 統計討論 測試資料 題目描述 原題來自 hnoi 2006 給定 n個字串 s1,s2,sn 要求找到乙個最短的字串 t,使得這 n 個字串都是 t 的子串...