码迷,mamicode.com
首页 > 其他好文 > 详细

【2016程设期末】表达式的期望值

时间:2017-11-02 21:20:11      阅读:587      评论:0      收藏:0      [点我收藏+]

标签:cin   开始   int   class   不能   浮点   namespace   log   clu   

由于提交关闭了所以我也不知道能不能A,样例能过...

描述

给定如下表达式:

A0O1A1O2A2O3A3… OnAn

其中Ai(0<=i<=n)代表操作数,Oi(1<=i<=n)代表算子。有三类算子包括‘&’、‘|’和‘^’,这些算子拥有相同的计算优先级。每个算子Oi以及它后面相邻的操作数Ai,他们可能一起消失,消失的概率为Pi(注意为保证计算精度须使用double型数据)。

例如,对于样例输入中的第一组测试数据期望计算方法为:

(P1*P2)*A0+(1-P1)*(P2)*(A0OA1)+(P1)*(1-P2)*(A0O2A2)+(1-P1)*(1-P2)*( A0O1A1O2A2)=0.1*0.2*1+0.9*0.2*(1^2)+0.1*0.8*(1^3)+0.9*0.8*(1^2^3)=0.72

输入

输入包含若干测试样例。
对于每组测试样例,第一行为正整数n ( 0 < n <= 200 )
第二行包含n+1个正整数代表操作数集合{A}(其中Ai小于2^20),
第三行包含n个算子代表操作算子集合{O},第四行包含n个浮点数代表概率集合{P}(其中0 <= Pi <= 1)。输出对于每组测试样例,第一行输出测试样例序号(从1开始)。然后,输出期望值,近似到小数点后6位。

样例输入

2 
1 2 3 
^ ^ 
0.1 0.2 
2 
8 9 10 
^ ^ 
0.5 0.78
1 
1 2 
& 
0.5

样例输出

Case 1: 
0.720000 
Case 2: 
4.940000 
Case 3: 
0.500000
 1 #include<iostream>
 2 using namespace std;
 3 int n,a[201],s;
 4 double ans,p[201];
 5 char o[201];
 6 double f(int pos,double pre,int u) //当前开始的位置pos,之前得到的数pre和之前表达式的值u 
 7 {
 8     double t,s=0;
 9     int v;
10     if(pos==n+1) return 0;
11     for(int i=pos;i<=n;i++)
12     {
13         t=pre/u; 
14         t=t/p[i]-t;
15         //cout<<t<<‘ ‘;
16         switch(o[i])
17         {
18             case &:v=u&a[i];break;
19             case |:v=u|a[i];break;
20             case ^:v=u^a[i];break;
21         }
22         t*=v;   //算出当前得到的数 
23     //    cout<<v<<endl;
24         s+=t+f(i+1,t,v);
25     }
26     return s;
27 }
28 int main()
29 {
30     int kase=0; 
31     while(cin>>n)
32     {
33         ans=1;
34         for(int i=0;i<=n;i++) cin>>a[i];
35         for(int i=1;i<=n;i++) cin>>o[i];
36         for(int i=1;i<=n;i++) cin>>p[i];
37         
38         for(int i=1;i<=n;i++)  //当所有操作符都消失 
39             ans*=p[i]; 
40         ans*=a[0];
41         ans+=f(1,ans,a[0]);
42         printf("Case %d:\n%.6llf\n",++kase,ans);
43     }
44 }

 

【2016程设期末】表达式的期望值

标签:cin   开始   int   class   不能   浮点   namespace   log   clu   

原文地址:http://www.cnblogs.com/sulley/p/7774084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!