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. SpringBoot服务监控

    SpringBoot服务监控分为客户端和服务端,即服务端是监控方,客户端为被监控方. 例如需要对线上的SpringBoot服务project-A进行监控,则project-A 为客户端.而监控的服务p ...

  2. 单链表常见面试题(C语言实现)

    总结常见的单链表操作函数,复习使用,仅供参考,代码调试通过. #include<stdio.h> typedef struct node{ int data; struct node *n ...

  3. 转 winfrom如何通过http来进行通信,并且通过传递json格式的数据可接受json格式的数据

    string username = this.textBox1.Text; string password = this.textBox2.Text; string AA = HttpUtility. ...

  4. 洛谷 P2966 [USACO09DEC]牛收费路径Cow Toll Paths

    题目描述 Like everyone else, FJ is always thinking up ways to increase his revenue. To this end, he has ...

  5. 为什么我的C4C Service Request没办法Release到ERP?

    问题 UI上发现找不到Release to ERP的按钮: 但是在UI Designer里是能看到这个按钮的.检查其Visible的属性,绑到了一个Calculated Rule上面: 发现其显示在r ...

  6. codeforce Gym 100500A Poetry Challenge(博弈,暴搜)

    题解:状态压缩之后,暴力dfs,如果有一个选择,能让对手必败,那么就是必胜态,能转移到的状态都是对手的必胜态,或者无法转移,就是必败态. 总算是过了,TLE是因为状态没判重. #include< ...

  7. groups - 显示用户所在的组

    总览 (SYNOPSIS) groups [OPTION]... [USERNAME]... 描述 (DESCRIPTION) --help 显示此帮助, 然后退出 --version 显示版本信息, ...

  8. MFC:Unicode和多字节字符集下 CString和char的转化(MFC中)

    2011-05-16 00:10 1166人阅读 评论(0) 收藏 举报 mfcdelete Unicode下 CString转TCHAR TCHAR* szMsg = new TCHAR[wcsle ...

  9. java基础—异常处理

    一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.

  10. GCD之dispatch queue

    GCD之dispatch queue iOS中多线程编程工具主要有: NSThread NSOperation GCD 这三种方法都简单易用,各有千秋.但无疑GCD是最有诱惑力的,因为其本身是appl ...