欢迎光临散文网 会员登陆 & 注册

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}

... ...



AtCoder竞赛讲解_ABC310F(Bit + DP)的评论 (共 条)

分享到微博请遵守国家法律