152 - Expected value of the expression

Time Limit:2s Memory Limit:128MByte

Submissions:135Solved:65

DESCRIPTION

You are given an expression: A0O1A1O2A2⋯OnAnA0O1A1O2A2⋯OnAn, where Ai(0≤i≤n)Ai(0≤i≤n) represents number, Oi(1≤i≤n)Oi(1≤i≤n) represents operator. There are three operators, &,|,^&,|,^, which means and,or,xorand,or,xor, and they have the same priority.

The ii-th operator OiOi and the numbers AiAi disappear with the probability of pipi.

Find the expected value of an expression.

INPUT
The first line contains only one integer n(1≤n≤1000)n(1≤n≤1000). The second line contains n+1n+1 integers Ai(0≤Ai<220)Ai(0≤Ai<220). The third line contains nn chars OiOi. The fourth line contains nn floats pi(0≤pi≤1)pi(0≤pi≤1).
OUTPUT
Output the excepted value of the expression, round to 6 decimal places.
SAMPLE INPUT
2
1 2 3
^ &
0.1 0.2
SAMPLE OUTPUT
2.800000
HINT
Probability = 0.1 * 0.2 Value = 1 Probability = 0.1 * 0.8 Value = 1 & 3 = 1
Probability = 0.9 * 0.2 Value = 1 ^ 2 = 3
Probability = 0.9 * 0.8 Value = 1 ^ 2 & 3 = 3
Expected Value = 0.1 * 0.2 * 1 + 0.1 * 0.8 * 1 + 0.9 * 0.2 * 3 + 0.9 * 0.8 * 3 = 2.80000
疏于补题,在这种学习环境下我也很难进步,要想做的足够优秀,本来就是要花时间和别人不一样啊
想下前两天有人讲状压dp,讲完那道题我应该会做了,因为我做过状压dp的题,但是换一道一定是不一定的啊,但是我觉得作为一个讲解者,我会倾向于向大家普及更多的知识,从而共同进步
闲话还是少说好了,等觉得真的有些难受的话就写些鸡汤,鼓励下正在努力的自己
概率dp,往常也和期望有关,什么是期望呢,饿了么霸王餐30个人付30元抽到20元的红包,我投资1元红包中奖期望是0.67元,这明摆着就是亏得生意啊,但是赌徒心理会致使我买下去,其实中奖了并不意味着省钱,往常中奖了就有会去吃顿好的
也就是所得分数*概率,把所有的可能都累城下,这个内容是高中学的,但是我可不可以合并同类项啊

E=(Σp1*(E1+X1)+Σp2*X2)/(1-Σp2)得到这样一个通项公式,这样能在中间就对数据进行处理

给你一个n+1个数进行n个位操作和他们出现的概率,求下这个表达式的期望

再结合这个题目的意思和运算符的一些问题,进行状态转移就好了

#include<bits/stdc++.h>
using namespace std;
int a[];
int num[];
char op[][];
double p[];
double dp[][];
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=; i<=n; i++)scanf("%d",&num[i]);
for(int i=; i<=n; i++)scanf("%s",op[i]);
for(int i=; i<=n; i++)scanf("%lf",&p[i]);
double ans=;
for(int i=; i<=; i++)
{
for(int j=; j<=n; j++)
{
if((num[j]&(<<i))>)
{
a[j]=;
}
else a[j]=;
}
memset(dp,,sizeof(dp));
dp[][a[]]=;
for(int j=; j<=n; j++)
{
dp[j][]=dp[j-][]*p[j];
dp[j][]=dp[j-][]*p[j];
if(op[j][]=='|')
{
dp[j][^a[j]]+=dp[j-][]*(-p[j]);
dp[j][]+=dp[j-][]*(-p[j]);
}
else if(op[j][]=='&')
{
dp[j][]+=dp[j-][]*(-p[j]);
dp[j][^a[j]]+=dp[j-][]*(-p[j]);
}
else
{
dp[j][]+=dp[j-][^a[j]]*(-p[j]);
dp[j][]+=dp[j-][a[j]^]*(-p[j]);
}
}
ans+=(dp[n][]*(<<i));
}
printf("%.6f\n",ans);
}
return ;
}

dp好题 玲珑杯 Expected value of the expression的更多相关文章

  1. 13年山东省赛 The number of steps(概率dp水题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud The number of steps Time Limit: 1 Sec  Me ...

  2. ACM :漫漫上学路 -DP -水题

    CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  3. [poj2247] Humble Numbers (DP水题)

    DP 水题 Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The se ...

  4. poj 3254 状压dp入门题

    1.poj 3254  Corn Fields    状态压缩dp入门题 2.总结:二进制实在巧妙,以前从来没想过可以这样用. 题意:n行m列,1表示肥沃,0表示贫瘠,把牛放在肥沃处,要求所有牛不能相 ...

  5. POJ 1155 TELE 背包型树形DP 经典题

    由电视台,中转站,和用户的电视组成的体系刚好是一棵树 n个节点,编号分别为1~n,1是电视台中心,2~n-m是中转站,n-m+1~n是用户,1为root 现在节点1准备转播一场比赛,已知从一个节点传送 ...

  6. 【dp入门题】【跟着14练dp吧...囧】

    A HDU_2048 数塔 dp入门题——数塔问题:求路径的最大和: 状态方程: dp[i][j] = max(dp[i+1][j], dp[i+1][j+1])+a[i][j];dp[n][j] = ...

  7. POJ 2342 树形DP入门题

    有一个大学的庆典晚会,想邀请一些在大学任职的人来參加,每一个人有自己的搞笑值,可是如今遇到一个问题就是假设两个人之间有直接的上下级关系,那么他们中仅仅能有一个来參加,求请来一部分人之后,搞笑值的最大是 ...

  8. Vijos1057 盖房子(DP经典题)

    之前没有怎么刷过dp的题,所以在此学习了~(感谢walala大神的思路,给了我很大的启发) 也算是自己学习的另一种dp题型吧 先贴上状态转移方程: if(a[i][j]) f[i][j]=min(f[ ...

  9. dp百题大过关(第一场)

    好吧,这名字真是让我想起了某段被某教科书支配的历史.....各种DP题层出不穷,不过终于做完了orz 虽然各种手糊加乱搞,但还是要总结一下. T1 Monkey Banana Problem    这 ...

随机推荐

  1. 【深度精讲】JFinal中的Ret和Kv工具类的区别,你用对了吗?

    在JFinal中有两个类Map的工具类,一个是有状态的Ret,一个是无状态的Kv,各种自己的应用场景,你用对了吗? 下面我们从多个方面来探究一下,JFinal针对这两个类的设计: 一.位置-com.j ...

  2. python基础教程总结15——3 XML构建网址

    要求: 网址用一个XML文件描述,其中包括独立网页和目录的信息: 程序能创建所需的目录和网页: 可以改变网址的设计,并且以新的设计为基础重新生成所有网页 概念: 网站:不用存储有关网站本身的任何信息, ...

  3. 使用ABAP代码提交SAP CRM Survey调查问卷

    Jerry之前曾经写过两篇关于SAP CRM Survey调查问卷的技术文章: SAP CRM Survey调查问卷的模型设计原理解析 如何使用SAP CRM Marketing Survey创建一个 ...

  4. 在DataGridView控件中隔行换色

    实现效果: 知识运用: DataGridViewRow类的公共属性DefaultCellStyle的BackColor属性 public Color BackColor {get; set;} 实现代 ...

  5. js 去除数组中的空值以及数组判断是否有重复数据

    1.判断是否有重复数据 function isRepeat(array){ var hash = {}; for(var i in array) { if(array[i]!="" ...

  6. Python re module (regular expressions)

    regular expressions (RE) 简介 re模块是python中处理正在表达式的一个模块 r"""Support for regular expressi ...

  7. Mybatis中关于OGNL表达式冲突

    注意设计表字段不能用bor  xor  and  band  eq  neq  lt  gt  lte  gte  shl  shr  ushr

  8. SVN:The working copy is locked due to a previous error (二)

    之前也碰到过这种问题,但是根本问题不同,解决方案不同. 传送门:SVN:The working copy is locked due to a previous error (二) 本次错误如图: 解 ...

  9. 【转】 VC中TCP实现 异步套接字编程的原理+代码

    所谓的异步套接字编程就是  调用了 如下函数   WSAAsyncSelect   设置了 套接字的状态为异步,有关函数我会在下面详细介绍... 异步套接字解决了 套接字编程过程中的堵塞问题 .... ...

  10. CentOs 6.5设置使用私钥登录关闭ssh的密码登录修改ssh默认端口

    使用SecureCRT工具创建RSA公钥和私钥 [选项]=>[会话选项] 然后在弹出对话框中选择[公钥]然后点击[属性]: 在弹出窗口中选中[使用会话公钥设置],点击[创建身份文件]按钮: 然后 ...