AtCoder競賽講解_ABC310F(Bit + DP)
2023-07-20 15:51 作者:Clayton_Zhou | 我要投稿
AC代碼:
https://atcoder.jp/contests/abc310/submissions/43767945
題意:
我們有N個骰子。對于每個i=1,2,…,N,當
第i個骰子被拋出,得到一個介于1和Ai之間的隨機整數,包括1和Ai,具有相等的概率。
求出當N個骰子同時投擲時滿足以下條件的概率,取模99824353。
有一種方法可以選擇N個骰子中的一些(可能是全部),使它們的結果之和為10。
題解:
Bit DP
通過將集合與一個整數關聯來標記集合。
這里處理的集合{0,1,2,...,9,10}
1<=> {0}, 2<=> {1}, 3<=> {0,1}, 4<=> {2}, 5<=> {0,2}, 6<=> {1,2}, 7<=> {0,1,2},...
dp[i][j]:? 當擲下第i個骰子時,可獲得整數集為S(用j表示), 的概率。
注意,如果第一個骰子為1,第二個骰子為2,則3屬于S
如果j=7 表示 {0,1,2}, 第i個骰子為1,則得到集合 j|j<<1, 即15表示 {0,1,2,3}
如果第i個骰子為2,則得到集合 j|j<<2, 即31表示 {0,1,2,3,4}
如果第i個骰子為3,則得到集合 j|j<<3, 即63表示 {0,1,2,3,4,5}
如果第i個骰子為4,則得到集合 j|j<<4, 即119表示 {0,1,2, 4,5,6}
... ...
標簽: