HDU-4649 Professor Tian(期望dp)
来源:互联网 发布:ajax怎么解析json数据 编辑:程序博客网 时间:2024/06/05 01:06
传送门:HDU-4649
题意:
给你一个式子A0O1A1O2A3....OnAn,第i位有pi的概率消失掉,要计算式子最后值的期望
题解:期望dp
每个数二进制最多20位,我们维护每一位取0或取1的情况的概率,最后把为1的概率乘上1<<i再加起来即可
#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef pair<int,int> PII;const int MX = 1e3 + 5;int n,x,cas=0;int a[MX][20],b[MX];char op[5];double c[MX];double dp[MX][20][2];int main() { //freopen("in.txt","r",stdin); while (~scanf("%d", &n)) { for(int i=0;i<=n;i++){ scanf("%d",&x); for(int j=0;j<20;j++) a[i][j]=(x>>j&1); } for(int i=1;i<=n;i++) { scanf("%s",op); if(op[0]=='^') b[i]=0; else if(op[0]=='&') b[i]=1; else b[i]=2; } for(int i=1;i<=n;i++) scanf("%lf",&c[i]),c[i]=1-c[i]; memset(dp,0,sizeof(dp)); for(int i=0;i<20;i++) dp[0][i][a[0][i]]=1; for(int i=1;i<=n;i++){ for(int j=0;j<20;j++){ if(b[i]==0) for(int k=0;k<2;k++) dp[i][j][k]+=dp[i-1][j][k^a[i][j]]*c[i]; if(b[i]==1) { if(a[i][j]==0) dp[i][j][0]+=(dp[i-1][j][0]+dp[i-1][j][1])*c[i]; else { dp[i][j][0]+=dp[i-1][j][0]*c[i]; dp[i][j][1]+=dp[i-1][j][1]*c[i]; } } if(b[i]==2){ if(a[i][j]==0) { dp[i][j][0]+=dp[i-1][j][0]*c[i]; dp[i][j][1]+=dp[i-1][j][1]*c[i]; } else{ dp[i][j][1]+=(dp[i-1][j][0]+dp[i-1][j][1])*c[i]; } } dp[i][j][0]+=dp[i-1][j][0]*(1-c[i]); dp[i][j][1]+=dp[i-1][j][1]*(1-c[i]); } } double ans=0; for(int j=0;j<20;j++) ans+=(1<<j)*dp[n][j][1]; printf("Case %d:\n%.6f\n",++cas,ans); } return 0;}
阅读全文
0 0
- HDU-4649 Professor Tian(期望dp)
- 【HDU】4649 Professor Tian 期望DP
- hdu 4649 Professor Tian(期望)
- hdu 4649 Professor Tian (DP)
- DP hdu 4649 Professor Tian
- hdu - 4649 - Professor Tian(概率dp)
- HDU 4649 - Professor Tian(概率DP)
- HDU 4649 Professor Tian (概率DP)
- HDU 4649 Professor Tian(概率DP)
- hdu 4649 Professor Tian
- hdu 4649 Professor Tian
- HDU 4649 Professor Tian
- HDU 4649 Professor Tian
- hdu 4649 Professor Tian
- HDU 4649 Professor Tian(反状态压缩dp,概率)
- hdu 4849 Professor Tian(dp)
- hdu 4649——Professor Tian
- HDOJ 4649 Professor Tian
- 【每日一题-12】平衡二叉树/镜像与杨氏矩阵查找
- LINUX grep练习题
- poj1729(bfs+优先队列优化)
- Thread类的常用方法
- C++之开始学习C++
- HDU-4649 Professor Tian(期望dp)
- HDU-2601-An easy problem
- 后缀子串排序
- 各种进制转换
- poj1190(dfs+剪枝)生日蛋糕
- @ResponseBody
- 应届狗的自我修养--ajax前台调用后台数据显示List篇
- CSUACM月赛1972
- ToLua学习笔记,通信(一)