眾所周知,csl 最喜歡的密碼是 ******。於是有一天……
為了改變這一點,他決定重新設定乙個密碼。於是他隨機生成了乙個很長很長的字串,並打算選擇乙個子串作為新密碼。他認為安全的密碼長度至少為 m,那麼他有多少種不同選擇方式呢?兩種方案不同,當且僅當選出的密碼內容不同。
輸入描述:
第一行有兩個整數 n 和 m ,分別表示 csl 隨機生成的字串長度和安全的密碼的最短長度。
第二行有乙個長度為 n 的只含小寫字母的字串 s 表示 csl 隨機生成的字串。
1≤m≤n≤105
1≤m≤n≤105
輸出描述:
在一行輸出乙個整數,表示 csl 能選擇的方案數。
示例1輸入
複製9 1
abcabcabc
輸出複製
24備註:
除樣例外,所有的測試資料的字串的每個字元均從小寫字母 a - z 等概率隨機生成。
思路:這道題其實沒那麼想象中複雜… 這個備註很關鍵,等隨機概率生成,意味著字串長度越長重複概率越小,需要的就是將長度小於l的字串放進set中檢驗出有多少個不同的,這個l定為13也能過,大於13的字串意味每個都不相同,直接加上對應長度字串的數量即可
#include
#define fi first
#define se second
#define log2(a) log(n)/log(2)
#define show(a) cout<#define show2(a,b) cout<#define show3(a,b,c) couttypedef
long
long ll;
typedef pair<
int,
int> p;
typedef pairint> lp;
const ll inf =
1e17+10
;const
int n =
1e5+10;
const ll mod =
998244353
;const
int base=
131;
const
double pi=
acos(-
1);vector<
int> pri,en;
int n,m,k,num[n]
,x,vis[n]
,y;ll ans=
0,l,r;
map<
int,
int> mp;
string s,ss;
p a[n]
,b[n]
;set se;
intmain()
ans+
=se.
size()
;}for(
int i=
max(
14,m)
;i<=n;i++
) cout<}
解碼字串
表示式s,只包含數字字母以及方括號,該表示式有如下規則 數字只會出現在方括號之前,它表示方括號裡內容的重複次數 按上述規則展開字串 示例1 e3 2 abc gh eabcabcghabcabcghabcabcgh 示例2e9 xyz exyzxyzxyzxyzxyzxyzxyzxyzxyz 示例3...
openjudge 編碼字串
總時間限制 1000ms 記憶體限制 65536kb 描述在資料壓縮中,乙個常用的方法是行程長度編碼壓縮。對於乙個待壓縮的字串,我們可以依次記錄每個字元及重複的次數。例如,待壓縮的字串為 aaabbbbcbb 壓縮結果為 a,3 b,4 c,1 b,2 這種壓縮對於相鄰資料重複較多的情況有效,如果重...
ISBN號碼(字串)
isbn號碼 每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識別碼和3位分隔符,其規定格式如 x xx x 其中符號 就是分隔符 鍵盤上的減號 最後一位是識別碼,例如0 670 82162 4就是乙個標準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如0代表...