Permutation Bo
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1319 Accepted Submission(s): 618
Special Judge
Problem Description
There are two sequences
h1∼hn
and
c1∼cn
.
h1∼hn
is a permutation of
1∼n
. particularly,
h0=hn+1=0
.
We define the expression [condition] is 1 when condition is True,is 0 when condition is False.
Define the function f(h)=∑ni=1ci[hi>hi−1 and hi>hi+1]
Bo have gotten the value of c1∼cn , and he wants to know the expected value of f(h) .
We define the expression [condition] is 1 when condition is True,is 0 when condition is False.
Define the function f(h)=∑ni=1ci[hi>hi−1 and hi>hi+1]
Bo have gotten the value of c1∼cn , and he wants to know the expected value of f(h) .
Input
This problem has multi test cases(no more than
12
).
For each test case, the first line contains a non-negative integer n(1≤n≤1000) , second line contains n non-negative integer ci(0≤ci≤1000) .
For each test case, the first line contains a non-negative integer n(1≤n≤1000) , second line contains n non-negative integer ci(0≤ci≤1000) .
Output
For each test cases print a decimal - the expectation of
f(h)
.
If the absolute error between your answer and the standard answer is no more than 10−4 , your solution will be accepted.
If the absolute error between your answer and the standard answer is no more than 10−4 , your solution will be accepted.
Sample Input
4 3 2 4 5 5 3 5 99 32 12
Sample Output
6.000000 52.833333
这个题求期望,重要的也就是找出C[i]每个数值所占的比例。
因为我们知道h[0]和h[n+1]是等于0的,而h是1-n的排列,所以头和尾的排列就有两种情况。大的在左或者大的在右,其中只有一种是有贡献的也就是1/2;
对于中间的最大值排列的位置有3种情况,第一个,第二个,第三个,只有第二个才有贡献,所以就是1/3;
#include <stdio.h>
#include <string.h>
int main()
{
int a[1111], n, i;
while (~scanf("%d", &n))
{
int l = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
if (i > 0 && i < n - 1)
l += a[i];
}
double h = 0;
h = l/3.0+(a[0]+a[n-1])/2.0;
printf("%.6lf\n", h);
}
return 0;
}