HDU 4649 Professor Tian
来源:互联网 发布:复制信息打开淘宝 编辑:程序博客网 时间:2024/06/06 09:21
点击打开链接
这题递推ans[20]记录每一位1出现的概率
全部加起来即可
有的数字二进制虽然没有20位
但必须要判断到20位
WA了好多次
还好双德大神指出这个错误
http://blog.csdn.net/shuangde800/article/details/9816479这是他的题解
#include <cstdio>#include <algorithm>#include <iostream>using namespace std;double ans[23];char val[220];double p[220];int arr[220];void fuck(int num,char val,double p){ int hehe; double p1; for(int idx=1;idx<=20;idx++){ hehe=(num>>(idx-1))&1; p1=ans[idx]; switch(val){ case '|':{ if(hehe==1) p1=1; }break; case '&':{ if(hehe==0) p1=0; }break; case '^':{ if(hehe==1) p1=1-ans[idx]; }break; } ans[idx]=p1*p+(1-p)*ans[idx]; }}int main(){ int n,cas=1; while(scanf("%d%*c",&n)!=EOF){ memset(ans,0,sizeof ans); scanf("%d%*c",&arr[0]); val[0]='|'; p[0]=0; for(int i=1;i<=n;i++) scanf("%d%*c",&arr[i]); for(int i=1;i<=n;i++) scanf("%c%*c",&val[i]); for(int i=1;i<=n;i++) scanf("%lf%*c",&p[i]); for(int i=0;i<=n;i++){ fuck(arr[i],val[i],1-p[i]); } double out=0; for(int i=1;i<=20;i++) out+=(1<<(i-1))*ans[i]; printf("Case %d:\n%.6lf\n",cas++,out); } return 0;}
- 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)
- DP hdu 4649 Professor Tian
- hdu 4649 Professor Tian(期望)
- 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(概率DP)
- 【HDU】4649 Professor Tian 期望DP
- HDOJ 4649 Professor Tian
- HDU 4649 Professor Tian (2013多校联合5 1007)
- hdu 4649 Professor Tian 多校第五场
- Linux内核启动过程分析
- NSSearchPathForDirectoriesInDomains和NSHomeDirectory差异
- DP USACO 2.2.2 Subset Sums 集合
- 修正后的SYSTEM_THREADS与SYSTEM_PROCESSES结构体
- 1、Linux多线程,基本概念
- HDU 4649 Professor Tian
- 【c基础】数据类型--结构和联合
- Cocos2d-X引擎学习分享
- 【OpenCV】邻域滤波:方框、高斯、中值、双边滤波
- 记录 易语言 正则获取ip
- 2、Linux多线程,线程的分离与结合
- 最小生成树(MST)之Prim算法
- hibernate因为缺少标识符更新失败
- poj 2411 新写法