時間限制
記憶體限制
評測方式
題目**
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 31
0.86831
和bzoj1030基本一樣。
先對所有串建乙個ac自動機。
然後設$f[i][j]$為寫的長度為i,正在自動機的第j個節點的方案數。
設總方案數是$all$,那麼答案就是(all - 不在末尾節點的方案數)/all。
記得上傳結束標記,有結束標記的點不往外轉移。
#include usingnamespace
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 表示的是一種 法,在動態規劃演算法執行的過程中,會動態地去將子問題的解填入 和讀取已知子問題的解,以減少不必要的運算 相同點 都是通過組合子問題的解來求解原問題 不同點 動態規劃子問題...