alice和bob正在悄悄地給對方發資訊,資訊都是由英文小寫字母組成的,他們約定,所有的字母都得經過乙個字母表進行變換,以防洩漏。另一方面john卻在監聽。
john發現,alice和bob通訊的時候,總是先傳送加密後的密文,然後緊接著傳送原文。
但是alice和bob似乎也意識到了似乎有人監聽,有時候會隨意中斷了他們的通訊。不過每次都是在傳送完密文之後才停止傳送的。也就是說,john截獲到的資訊是密文的全文以及前一部分原文。原文可能乙個字元都沒有,也可能原文的全文都被截獲。
現在john比較頭疼,他雖然已經得到了他們兩個人通訊的加密字母表,但是分不清楚什麼地方是密文和明文的分界線。你能幫他還原回完整的傳輸內容嗎?
如果有多種可能時,john認為那個最短的資訊才是原始的。
第一行是密碼**,包含26個小寫字母,依次表示a-z加密後的字母。
第二行是john截獲到的通訊資訊。
包含一行,表示還原後的通訊資訊。
abcdefghijklmnopqrstuvwxyz
abcdab
abcdabcd
通訊長度l<=100000。
資料不強,直接暴力就行
從n/2開始列舉每個交界點,往後面匹配,不成功就break
hack資料:a·····ab
#include
#include
#include
#define r register
#define ll long long
#define max(a,b) (a>b?a:b)
#define min(a,b) (ausing
namespace std;
const
int n=
1e5+10;
int n,k,last,z[n]
,head[n]
,to[n*2]
,next[n*2]
,w[n*2]
;ll f[n][2
];inline
void
read
(int
&x)inline
void
add(
int a,
int b,
int c)
inline
void
dfs(
int u,
int v)
if(z[u]
)f[u][0
]=0x7ffffffffff
,f[u][1
]=sum;
else f[u][0
]=sum,f[u][1
]=sum-ma;
}int
main()
dfs(1,
1);printf
("%lld"
,min
(f[1][
0],f[1][
1]))
;}
NOIP2012模擬10 25 旅行
給定乙個n行m列的字元矩陣,代表空地,x 代表障礙。移動的規則是 每秒鐘以上下左右四個方向之一移動一格,不能進入障礙。計算 在空地中隨機選擇起點和終點 可以重合,此時最短耗時為0 從起點移動到終點最短耗時的平均值。每一行每一列至多有1個障礙,並且障礙不在對角線方向相鄰。以下矩陣是不合法的 x x.第...
NOIP2012模擬10 25 剪草
首先分析的出兩個結論,1 每棵草最多隻剪一次 2 按照生長速度,先剪小的,再剪大的。不難證明,略。那麼把小草按生長速度從大到小排個序後,設f i,j 表示,在倒數第i個時刻,已經處理了j棵草時的最小高度和。轉移為f i j min f i j 1 f i 1 j 1 a j g a ns i 1 a...
NOIP2012模擬10 25 旅行
給定乙個n行m列的字元矩陣,代表空地,x 代表障礙。移動的規則是 每秒鐘以上下左右四個方向之一移動一格,不能進入障礙。計算 在空地中隨機選擇起點和終點 可以重合,此時最短耗時為0 從起點移動到終點最短耗時的平均值。每一行每一列至多有1個障礙,並且障礙不在對角線方向相鄰。以下矩陣是不合法的 xx.50...