牛客:比赛
题意:
ACM出12道题,每道题AC的概率受3种因素的影响,给出每一种因素的影响,给出受每一种因素影响下AC每道题的概率,求AC
[0,12]
道题的概率
题解:
利用二进制枚举子集,把每一种状态的概率枚举出来,将数量相同的状态的概率累加即可
::dp也可以写,无奈我不会
AC代码:二进制枚举子集
#include<bits/stdc++.h>
using namespace std;
#define ll long long
double p[13],a[13],b[13],c[13],op[13];
void pd()
{
double pc;
int id;
for(int i=0; i<(1<<12); i++)
{
pc=1.0;
id=0;
for(int j=0; j<12; j++)
{
if(i&(1<<j))
{
id++;
pc*=(1-p[j]);
}
else
{
pc*=p[j];
}
} op[id]+=pc;
}
for(int i=0; i<=12; i++)
{
printf("%.6lf\n",op[i]);
}
}
int main()
{
for(int i=0; i<12; i++)
{
scanf("%lf",&a[i]);
}
for(int i=0; i<12; i++)
{
scanf("%lf",&b[i]);
}
for(int i=0; i<12; i++)
{
scanf("%lf",&c[i]);
}
for(int i=0; i<12; i++)
{
p[i]=(1-a[i])*(1-b[i])*(1-c[i]);
}
pd();
}