JoyOI1519 博彩遊戲

2022-02-06 00:20:31 字數 1603 閱讀 3213

時間限制

記憶體限制

評測方式

題目**

1000ms

131072kib

標準比較器

local

bob最近迷上了乙個博彩遊戲……

這個遊戲的規則是這樣的:

每花一塊錢可以得到乙個隨機數r,花上n塊錢就可以得到乙個隨機序列;

有m個序列,如果某個序列是產生的隨機序列的子串,那麼就中獎了,否則不中。

bob會告訴你這m個序列,和身上有的錢的總數n,當然還有r的範圍。

請你告訴bob中獎的概率有多少?

第一行三個用空格隔開的數n、m和r的範圍r。

其中1<=r<=9,0一行乙個實數,表示中獎的概率(保留小數點後5位小數)。

資料分布:

第1個點~第10個點,每個點5分;

第11個點~第15個點,每個點10分。

對於樣例的解釋:

隨機序列一共有3^5=243個,其中包含"1"的個數為211個,則概率為211/243=0.86831bob han

輸入樣例 #1

輸出樣例 #1

5 1 3

1

0.86831

和bzoj1030基本一樣。

先對所有串建乙個ac自動機。

然後設$f[i][j]$為寫的長度為i,正在自動機的第j個節點的方案數。

設總方案數是$all$,那麼答案就是(all - 不在末尾節點的方案數)/all。

記得上傳結束標記,有結束標記的點不往外轉移。

#include using

namespace

std;

#define reg register

#define int long long

#define n 400005

intn, m, r;

int nxt[n][10

], fail[n], end[n];

inttot;

int f[105

][n];

int all = 1

, ans;

char s[30

];inline

void

ins()

inline

void

ac_match()

end[x] |=end[fail[x]];

}}signed main()

ac_match();

f[0][0] = 1

;

for (reg int i = 0 ; i < n ; i ++)

for (reg int x = 0 ; x <= tot ; x ++)

for (reg int i = 1 ; i <= n ; i ++) all *=r;

for (reg int i = 0 ; i <= tot ; i ++)

if (!end[i]) ans +=f[n][i];

printf(

"%.5lf\n

", (double)(all - ans) / (double

)all);

return0;

}

JoyOI1018 階乘統計

時間限制 記憶體限制 評測方式 題目 1000ms 131072kib 標準比較器 local 太原成成中學第2次模擬賽 第一道 n的階乘定義為n 123 n 如3 6 n 通常最後會有很多0,如5 120 最後有乙個0,現在統計n 去除末尾的0後,最後k位是多少 第一行包括兩個數n,k 如果n 不...

Joyoi 收集郵票

題鏈 題解.1 期望dp,平方的期望不等於期望的平方。在這個題上坑了好久,也算是對期望的理解又深了一些。很好的題解 再闡述一下平方的期望是在什麼情況下可以遞推的 對於乙個隨機變數x,我們知道其每個取值的概率,那麼我們容易由定義得出這個隨機變數的期望e x p1 x1 p2 x2 以及這個隨機變數的平...

演算法導論15 1

動態規劃 dynamic programming 描述了它區別與其他演算法的最大特徵 其中 programming 表示的是一種 法,在動態規劃演算法執行的過程中,會動態地去將子問題的解填入 和讀取已知子問題的解,以減少不必要的運算 相同點 都是通過組合子問題的解來求解原問題 不同點 動態規劃子問題...