luo‘s oj P1917 简单的期望(exp)

博客分析了oj题目P1917的解决方案,通过dp[i][s][j][k]表示进行了i次操作,当前数的二进制后8位为s,第9位为0或1,并有j位连续相同的状态概率。由于进位问题,取后8位能确保在200次操作内避免未知进位的影响,从而简化计算,时间复杂度为O(2^8 * n^2)。
摘要由CSDN通过智能技术生成

传送门

分析

令 dp[ i ][ s ][ j ][ k ] 为进行了 i 次操作,当前数的二进制表示中后 8 位为 s ,第 9 位为 0 或 1,并且从第 9 位开始有连续 j 位相同的概率。转移挺麻烦的但是很显然,这里就不写了(写在代码里了QwQ)
直接贴题解
解释一下取后 8 位的原因。考虑对一个这样的数进行 +1 操作:……11011111111,我们将第 9 位的 0 进成 1 时,前面有多少个连续的 1 是未知的,如果之后再产生一次进位,这些未知个数的 1 都会变成 0,而它们都会对答案产生贡献,由于个数未知,无法将这些贡献计入答案。而取后 8 位时,最少需要 2^8 次 +1 操作才会产生第二次进位,而操作总数最多只有 200,因此进位次数最多 1,不会对答案产生影响。
时间复杂度O(2^8*n^2) 。

#include<bits/stdc++.h>
#define MaxM 232//(2^31-1)*2^200//所以连续的有232-8但是可能越界,于是开的稍微大一点 
#de
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值