玲珑OJ 1152
来源:互联网 发布:jessyline姐妹品牌js 编辑:程序博客网 时间:2024/05/16 19:39
题目链接
显然可以拆位,20个位单独考虑
#include<stdio.h>#include<bits/stdc++.h>#define ll long long#define pii pair<int,int>#define pll pair<ll,ll>#define MEM(a,x) memset(a,x,sizeof(a))#define lowbit(x) ((x)&-(x))using namespace std;const int N = 1000+5;double p[N];int a[N];char o[N];double d[2][22];double dp(int n){ MEM(d,0); double *d1=d[0],*d2=d[1]; for(int i=0;i<=20;++i){ if((a[0]>>i)&1){ d1[i]=1; } } for(int i=1;i<=n;++i){ for(int j=0;j<=20;++j){ d2[j]=d1[j]; if(((a[i]>>j)&1)&&o[i]=='|'){ d2[j]=d1[j]+(1-d1[j])*(1-p[i]); } if(!((a[i]>>j)&1)&&o[i]=='&'){ d2[j]=d1[j]*p[i]; } if(((a[i]>>j)&1)&&o[i]=='^'){ d2[j]=d1[j]*p[i]+(1-d1[j])*(1-p[i]); } } swap(d1,d2); } double ans=0; int t=1; for(int i=0;i<=20;++i){ ans+=d1[i]*t; t*=2; } return ans;}int main(){ //freopen("/home/lu/code/r.txt","r",stdin); //freopen("/home/lu/code/w1.txt","w",stdout); int n; while(~scanf("%d",&n)){ for(int i=0;i<=n;++i){ scanf("%d",&a[i]); } for(int i=1;i<=n;++i){ scanf("%*c%c",&o[i]); } for(int i=1;i<=n;++i){ scanf("%lf",&p[i]); } printf("%f\n",dp(n)); } return 0;}
阅读全文
0 0
- 玲珑OJ 1152
- SDUT oj 玲珑龟
- 玲珑oj 1074
- 玲珑oj 1072 - Capture
- 玲珑oj Digital Count
- 玲珑OJ 1047
- 玲珑oj 1096
- 玲珑oj 1099
- 玲珑OJ 1100
- 玲珑OJ 1097
- 玲珑oj 1097
- 玲珑OJ-1100
- 玲珑学院OJ 1126
- 玲珑学院OJ 1125
- 玲珑学院OJ 1131
- 玲珑oj 1125
- 玲珑oj 1129
- 玲珑oj 1067
- 排序与查找
- jquery二维码插件
- html好看的下拉菜单样式
- Meteor Shower (bfs)
- 16、反转链表(递归方法)
- 玲珑OJ 1152
- 最长公共子序列
- opencl基础概念
- Leetcode 645(Java)
- 【Python】聚类算法应用 -- 广告投放效果的离线评估
- AJAXday1异步请求编码思路(get请求,验证用户名是否重复)
- 抽象类 接口
- Java Application和Java Applet
- linux基本命令及操作9(软件安装)