多校联赛10补题

最后一场乐,awsl
2019-08-21

###1Valentine’s Day
####思路
这题讲道理应该是数学推理找规律,不过有大佬说是贪心。其实都差不多,先发现如果最大值大于等于0.5就直接输出,若小于0.5,就是sort排个序,从大到小开始迭代找最大值。
####AC代码(来自我的大佬队友HJS)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
double max_1, temp, temp2, cnt = 1.000000, max_2;
double num[10005];
int main()
{
int T, n;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%lf", &num[i]);
sort(num, num + n);
max_2 = num[n - 1];
if(max_2 < 0.500000)
{
max_1 = num[n - 1];
temp2 = cnt;
for(int i = n - 2; i >= 0; i--)
{
temp2 *= (cnt - num[i + 1]);
max_1 *= (cnt - num[i]);
max_1 += num[i] * temp2;
max_2 = max(max_1, max_2);
}
}
printf("%.12lf\n", max_2);
}
}

###2Welcome Party
####思路
####AC代码

1

###3Make Rounddog Happy
####思路
####AC代码

1

###本文参考

HJS大佬