Welcome

首页 / 软件开发 / 数据结构与算法 / 算法:HDU 4649 Professor Tian(反状态压缩dp,概率)

算法:HDU 4649 Professor Tian(反状态压缩dp,概率)2014-01-01 csdn shuangde800题目大意

初始有一个数字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[n][1]