HDU 4649 Professor Tian(反状态压缩dp,概率)
2013-08-07 19:30
253 查看
本文出自 http://blog.csdn.net/shuangde800
且每个数字出现的概率是pi
如果某个数字出现了,那么就和前面的数字用它的操作符进行位运算。
问最终的期望值是多少?
知道了怎么表示状态这题就觉得不难做了,赛后1A。
题解官方的已经很详细了,不再累赘:
反状态压缩——把数据转换成20位的01来进行运算
因为只有20位,而且&,|,^都不会进位,那么一位一位地看,每一位不是0就是1,这样求出每一位是1的概率,再乘以该位的十进制数,累加,就得到了总体的期望。
对于每一位,状态转移方程如下:
f[i][j]表示该位取前i个数,运算得到j(0或1)的概率是多少。
f[i][1]=f[i-1][1]*p[i]+根据不同运算符和第i位的值运算得到1的概率。
f[i][0]同理。
初始状态:f[0][0~1]=0或1(根据第一个数的该位来设置)
每一位为1的期望 f
[1]
题目链接:点击打开链接
题目大意
初始有一个数字A0, 然后给出A1,A2..An共n个数字,这n个数字每个数字分别有一个操作符,&,|,^且每个数字出现的概率是pi
如果某个数字出现了,那么就和前面的数字用它的操作符进行位运算。
问最终的期望值是多少?
思路
这题官方题解说是反状态压缩,还是第一次做这种题。知道了怎么表示状态这题就觉得不难做了,赛后1A。
题解官方的已经很详细了,不再累赘:
反状态压缩——把数据转换成20位的01来进行运算
因为只有20位,而且&,|,^都不会进位,那么一位一位地看,每一位不是0就是1,这样求出每一位是1的概率,再乘以该位的十进制数,累加,就得到了总体的期望。
对于每一位,状态转移方程如下:
f[i][j]表示该位取前i个数,运算得到j(0或1)的概率是多少。
f[i][1]=f[i-1][1]*p[i]+根据不同运算符和第i位的值运算得到1的概率。
f[i][0]同理。
初始状态:f[0][0~1]=0或1(根据第一个数的该位来设置)
每一位为1的期望 f
[1]
代码
相关文章推荐
- hdu 4649 Professor Tian 反状态压缩+概率DP
- HDU 4649 Professor Tian(反状态压缩dp,概率)
- [HDU 4336]Card Collection[状态压缩DP][概率DP][容斥原理]
- HDU 4336 Card Collector 状态压缩+概率DP
- hdu 4336 Card Collector 概率DP 状态压缩DP
- hdu 4336 全期望公式+状态压缩+概率dp
- HDU 5045 Contest(概率dp,状态压缩,2014上海网络赛1004)
- HDU 4649 Professor Tian (概率DP)
- HDU 4336 Card Collector 概率dp 状态压缩
- hdu 4336 Card Collector 概率dp+状态压缩
- HDU 4336 Card Collector 概率dp 状态压缩| 容斥原理
- [HDU 4336]Card Collection[状态压缩DP][概率DP][容斥原理]
- HDU 4649 Professor Tian(概率DP)
- Hdu 4336 Card Collector 概率DP+状态压缩
- HDU 4649 - Professor Tian(概率DP)
- HDU 4336 Card Collector(状态压缩+概率DP)
- HDU 4336 Card Collector [状态压缩概率DP]
- HDU 4336 Card Collector(概率DP,状态压缩)
- HDU 4649 Professor Tian (概率DP)
- hdu - 4649 - Professor Tian(概率dp)