HDU-5753 Permutation Bo(期望)(概率)

Permutation Bo

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 863    Accepted Submission(s): 517
Special Judge


Problem Description
There are two sequences   h1hn  and   c1cn.   h1hn  is a permutation of   1n. 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>hi1  and  hi>hi+1]

Bo have gotten the value of   c1cn, 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(1n1000), second line contains   n  non-negative integer   ci(0ci1000).
 

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   104, your solution will be accepted.
 

Sample Input
 
   
4 3 2 4 5 5 3 5 99 32 12
 

Sample Output
 
   
6.000000 52.833333
 

h1-hn是n的1~n的全排列

让计算f(h)的期望,分开求单个的期望贡献,(不太懂期望mark一下),即ci和fi的概率乘积,

fi的概率在两端出现为大于两边的数的情况的概率为1/2,中间出现的概率为1/3

/*

*/
#include
#include
#include
#include
using namespace std;

const int N = 1005;
int n,c[N];
int main()
{
    while(~scanf("%d",&n))
    {
        for(int i = 1;i <= n;i++)
            scanf("%d",&c[i]);
        double ans = 0.0;
        ans += (double)(c[1]+c[n]) / 2;
        for(int i = 2;i <= n-1;i++)
            ans += (double)c[i]/3;
        printf("%.6f\n",ans);
    }
    return 0;
}



你可能感兴趣的:(数学)