藍橋杯 試題 演算法提高 字串生成器

2021-10-03 20:23:07 字數 1189 閱讀 5453

問題描述

有乙個字串生成器,初始時生成的字串為空串,它每次按照給定概率隨機生成乙個小寫字母,加在當前已生成字串的後面。

給定n個長度為l的字串,每個字串由小寫字母組成。

如果在某個時候,發現每個給定字串都在當前已生成的字串中作為子串出現過,生成器就會停下來,將當前生成的字串作為輸出。

求輸出字串長度的期望值。

輸入格式

第一行包含乙個正整數c,表示有c組資料。

每組資料的第一行包含三個正整數n, l, t (l<=6, t<=10)。其中t表示生成器僅會生成前t個小寫字母。

每組資料的第2~n+1行,每行包含乙個長度為l的字串,每個字串由前t個小寫英文本母組成。

每組資料的第n+2行包含t個不超過10000的正整數,設第i個正整數為x,那麼字串生成器生成第i個小寫字母的概率為x/10000。輸入保證這t個正整數之和為10000。

輸出格式

包含c行,依次對應每組資料。每行包含乙個實數,表示輸出字串長度的期望值。

樣例輸入

12 3 3

aacabb

3333 3333 3334

樣例輸出

40.5060771264

資料規模和約定

本題共10個測試點。

對於30%的資料,n=1, c=1;

對於60%的資料,n<=4, c<=2;

對於100%的資料,n<=8, c<=20。

其中n=1的資料中存在乙個測試點,只有你的答案和我們的答案相差小於1才為正確,並且這個測試點中l=3, t=3;

對於其他9個測試點,只有你的答案和我們的答案相差小於0.01才為正確。

資料保證正確答案不會超過5*10^6。

public

static

void

main

(string[

] args)

/* * 環的特殊處理

* n%n==0

* (n+1)%n=1

*/int max=integer.min_value;

for(

int i=

0;isystem.out.

println

(max)

;}

藍橋杯試題 演算法提高 字串匹配

題目描述 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入格式 輸入的第一...

藍橋杯 試題 演算法提高 字串匹配

問題描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入格式 輸入的第一行包含乙個字串s,由大小寫英文本母組成。第二行包含乙個數字,表示大小...

字串生成器

建立成功的字串物件,其長度是固定的,內容不能被改變和編譯,雖然使用 號可以達到附加新字元或字串的目的,但是 號會產生乙個新的string例項,會在記憶體中產生建立新的字串物件,如果重複的對字串進行修改,將極大的增加系統的開銷。而j2se5.0新增了可變字串行string builder類,大大提高的...