2019 杭电多校 10 1003

题目链接:HDU 6693

比赛链接:2019 Multi-University Training Contest 10

Problem Description

Oipotato loves his girlfriend very much. Since Valentine's Day is coming, he decides to buy some presents for her.

There are \(n\) presents in the shop, and Oipotato can choose to buy some of them. We know that his girlfriend will possibly feel extremely happy if she receives a present. Therefore, if Oipotato gives \(k\) presents to his girlfriend, she has \(k\) chances to feel extremely happy. However, Oipotato doesn't want his girlfriend to feel extremely happy too many times for the gifts.

Formally, for each present \(i\), it has a possibility of \(P_i\) to make Oipotato's girlfriend feel extremely happy. Please help Oipotato decide what to buy and maximize the possibility that his girlfriend feels extremely happy for exactly one time.

Input

There are multiple test cases. The first line of the input contains an integer \(T (1\le T\le 100)\), indicating the number of test cases. For each test case:

The first line contains an integer \(n (1\le n\le 10 000)\), indicating the number of possible presents.

The second line contains \(n\) decimals \(P_i (0\le Pi\le 1)\) with exactly six digits after the decimal point, indicating the possibility that Oipotato's girlfriend feels extremely happy when receiving present \(i\).

It is guaranteed that the sum of \(n\) in all test cases does not exceed \(450000\).

Output

For each test case output one line, indicating the answer. Your answer will be considered correct if and only if the absolute error of your answer is less than \(10^{−6}\).

Sample Input

2
3
0.100000 0.200000 0.900000
3
0.100000 0.300000 0.800000

Sample Output

0.900000000000
0.800000000000

Solution

题意

有 \(n\) 种礼物,第 \(i\) 种礼物能让女朋友开心的概率为 \(P_i\),挑一些礼物,问让女朋友开心一次的概率最大为多少。

题解

概率 贪心

如果有概率大于等于 \(0.5\) 的礼物,输出其中最大的。

否则,对概率从大到小。暴力枚举选择前 \(k\) 大的礼物的的概率,求最大值即可。

此题有原题。见 CodeForces 442B

相关证明见官方题解:Codeforces #253 editorial

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const double eps = 1e-8;
const int inf = 0x3f3f3f3f;
const int maxn = 100000 + 5; double p[maxn]; int main() {
int T;
scanf("%d", &T);
while(T--) {
int n;
scanf("%d", &n);
double ans = 0, maxa = -1;
int flag = 0;
for(int i = 0; i < n; ++i) {
scanf("%lf", &p[i]);
if(p[i] >= 0.5) {
flag = 1;
if(maxa = -1) maxa = p[i];
else maxa = max(maxa, p[i]);
}
}
if(flag) {
printf("%.6lf\n", maxa);
} else {
sort(p, p + n);
double tmp1 = p[n - 1];
double tmp2 = p[n - 1] * (1 - p[n - 2]) + p[n - 2] * (1 - p[n - 1]);
ans = tmp2;
int k = 3;
while(tmp1 < tmp2 && k <= n) {
ans = tmp2;
tmp1 = tmp2;
tmp2 = 0;
for(int i = n - 1; i >= n - k; --i) {
double tmp = 1;
for(int j = n - 1; j >= n - k; --j) {
if(j == i) {
tmp *= p[j];
} else {
tmp *= 1 - p[j];
}
}
tmp2 += tmp;
}
k ++;
}
printf("%.6lf\n", max(ans, tmp2));
}
}
return 0;
}

HDU 6693 Valentine's Day (概率)的更多相关文章

  1. HDU 3853:LOOPS(概率DP)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=3853 LOOPS Problem Description   Akemi Homura is a M ...

  2. HDU 3076 ssworld VS DDD 概率dp,无穷级数,oj错误题目 难度:2

    http://acm.hdu.edu.cn/showproblem.php?pid=3076 不可思议的题目,总之血量越少胜率越高,所以读取时把两人的血量交换一下 明显每一轮的胜率和负率都是固定的,所 ...

  3. HDU 5781 ATM Mechine (概率DP)

    ATM Mechine 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5781 Description Alice is going to take ...

  4. hdu 4762 Cut the Cake概率公式

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4762 题目大意:一个圆形蛋糕,现在要分成M个相同的扇形,有n个草莓,求n个草莓都在同一个扇形上的概率. ...

  5. HDU 5985 Lucky Coins(概率)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=5985 题意:有多种类型的硬币,每种类型的硬币都有一定的数量,现在每次抛硬币,除去朝下的硬币,知道最后 ...

  6. hdu 6305 RMQ Similar Sequence——概率方面的思路+笛卡尔树

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6305 看题解,得知: 0~1内随机取实数,取到两个相同的数的概率是0,所以认为 b 序列是一个排列. 两个 ...

  7. HDU 4050 wolf5x(动态规划-概率DP)

    wolf5x Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  8. HDU 4865 Peter's Hobby --概率DP

    题意:第i天的天气会一定概率地影响第i+1天的天气,也会一定概率地影响这一天的湿度.概率在表中给出.给出n天的湿度,推测概率最大的这n天的天气. 分析:这是引自机器学习中隐马尔科夫模型的入门模型,其实 ...

  9. HDU 4035:Maze(概率DP)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=4035 Maze Special Judge Problem Description   When w ...

随机推荐

  1. MySQL concat、concat_ws 和 group_concat 的用法

    一.CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串.使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为+----+ ...

  2. 服务安全-OAuth-OAuth2.0:百科

    ylbtech-服务安全-OAuth-OAuth2.0:百科 OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 2.0即完全废止了OAuth1.0. OAuth 2.0关注客户端开发 ...

  3. win10 打开 sql sever配置管理器

    !找到解决办法啦!WIN10系统 此电脑->右击->管理弹出以上界面啊哈哈哈还有一些解决办法在这个贴吧里...http://tieba.baidu.com/p/3000709047

  4. git submodule 删除及修改

    1.  删除子模块 # 逆初始化模块,其中{MOD_NAME}为模块目录,执行后可发现模块目录被清空 git submodule deinit {MOD_NAME} # 删除.gitmodules中记 ...

  5. ROW_NUMBER() over(order by ID desc ) as RowNumber 返回类型问题

    因为ID是int类型,所以ROW_NUMBER() over(order by ID desc ) as RowNumber 想当然的认为是Int类型 实际ROW_NUMBER() over(orde ...

  6. PAT甲级——A1130 Infix Expression【25】

    Given a syntax tree (binary), you are supposed to output the corresponding infix expression, with pa ...

  7. 实用maven笔记三-仓库

    maven管理依赖的一个很重要的基础在于,其维护了收集大量依赖jar包的仓库. maven的仓库分类为本地仓库和远程仓库. 构件在仓库的路径大致为:groupId/artifactId/version ...

  8. 数据持久化之Android文件系统(一)

    阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680 一.前言 文件系统一直是Android开发过程中经常接触的东西.而关于内 ...

  9. idea的spring配置

    开始使用idea,开始的时候把相关的插件都禁用了,导致在建项目和configuration的时候不出现spring相关字样 到plugins中找到installed的插件,查看spring boot ...

  10. 【记录】Windows host配置域名

    程序员开发中可能会需要域名访问程序,说白了就是修改hosts文件,过程如下: 1:找到本机hosts文件路径一般位置在: C:\Windows\System32\drivers\etc 2:右键编辑h ...