【問題描述】
假髮通過了不懈的努力,得到了將軍家門鎖的密碼(一串小寫英文本母)。但是假髮被十四和猩猩他們盯上了,所以假髮需要把密碼傳遞出去。因為假髮不想十四他們發現幾松門前貼的小紙條就是將軍家的密碼,所以他加密了密碼(新八:聽起來有點詭異)。加密方法如下:隨機地,在密碼中任意位置插入隨機長度的小寫字串。
不過,假髮相信銀桑和他那麼多年小學同學,一定能猜中密碼是什麼的(新八:銀桑什麼時候成攮夷志士了!!!)。可是,寫完了小紙條之後,假髮覺得有點長,就想截去頭和尾各一段(可以為空),讓剩下的中間那一段依然包含真~密碼。想著想著,假髮就想知道有多少種可行方案。結果在沉迷於稿紙之際,假髮被投進了獄門島(新八:……)。於是,就由你計算了。
【輸入格式】
兩行非空字串,純小寫英文本母,第一行是加密後的密碼,第二行是原密碼。第一行長度不超過 300000,第二行不超過 200。
【輸出格式】
一行,有多少種方案。注意:不剪也是一種方案。
【輸入樣例】
【樣例1】
abcabcabc
cba【樣例2】
abcabcaba
cba【樣例3】
abcabcabac
cba【輸出樣例】
【樣例1】
9【樣例2】
12【樣例3】
18 【樣例解釋】
【樣例1解釋】
用(l,r)表示一種方案,其中l和r分別表示截去頭和尾的長度。這9鐘方案分別是 (0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)。
【資料範圍】
30%的資料滿足第一行長度不超過1000。
100%的資料滿足第一行長度不超過300000,方案總數不超過10^18。
本題本人用了發瘋式的標記方法。重複標記,減少時間,詳細如下:
#include
#include
#include
#include
#include
#include
using namespace std;
vectorq[1000];
char a[300005],d[205];
long long ans=0,m,n,vis[300]=,t;
int init()
void work()
p=q[d[i]][vis[i]];
}if(ok) break;
ans+=(n-q[d[m-1]][vis[m-1]])*(
q[d[0]][vis[0]]-t);
}}int main()
noip模擬賽 密碼
表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...
noip模擬賽 密碼
yjc把核彈發射密碼忘掉了 其實是密碼被加密了,但是yjc不會解密。密碼由n個數字組成,第i個數字被加密成了如下形式 第k小的滿足 2 l p 1 且p為質數的p。yjc希望你能幫他算出密碼是多少。輸入格式 第一行包含乙個整數n,表示密碼中的數字個數。接下來n行每行兩個整數l和k,表示乙個數字的加密...
2014 10 4模擬賽 某種密碼
某種密碼 password.關於某種密碼有如下描述 某種密碼的原文a是由n個數字組成,而密文b是乙個長度為n的01數串,原文和密文的關聯在於乙個鑰匙碼key。若key ai bi 則密文就是原文的一組合法密碼。現在有原文和鑰匙碼,請編乙個程式來幫助他統計到底有多少個符合條件的密文。輸入資料 第一行兩...