题意
题意就是给你n件有概率让你女朋友开心的物品,你从中挑一件或多件,如何让你的女朋友最大可能只开心一次(这种男朋友咳咳= =),输出最终概率
题解
本来比赛的时候在考虑算法,因为队友敲了暴力没过,后来发现真的是暴力2333(暴力出奇迹)。
这题比较坑的一点就是,你选两件或者以上的物品得到的概率可能更大,比如说:
开心 | 0.3 | 0.3 |
---|---|---|
不开心 | 0.7 | 0.7 |
这样的一次开心情况就是选两件的概率0.3 * 0.7+0.3 * 0.7=0.42。
如是就有了以下暴力代码:
#include<iostream>
#include<algorithm>
using namespace std;
double a[1000005];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%lf",&a[i]);
a[i] = 1-a[i];
}
sort(a,a+n);
double maxx = 0;
int index=0;
for(int k=1;k<=n;k++)
{
double sum = 0;
for(int i=0;i<k;i++)
{
double tmp = 1;
for(int j=0;j<k;j++)
{
if(j==i)
tmp *= 1-a[j];
else
tmp *= a[j];
}
sum += tmp;
}
if(sum-maxx > 0)
maxx = sum;
else
break;
}
printf("%.12f\n",maxx);
}
return 0;
}