hdu5753(2016多校第三场,数学题)
来源:互联网 发布:mysql 高级sql语句 编辑:程序博客网 时间:2024/06/06 04:53
Permutation Bo
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 593 Accepted Submission(s): 360
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 functionf(h)=∑ni=1ci[hi>hi−1 and hi>hi+1]
Bo have gotten the value ofc1∼cn , and he wants to know the expected value of f(h) .
We define the expression
Define the function
Bo have gotten the value of
Input
This problem has multi test cases(no more than 12 ).
For each test case, the first line contains a non-negative integern(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
Output
For each test cases print a decimal - the expectation off(h) .
If the absolute error between your answer and the standard answer is no more than10−4 , your solution will be accepted.
If the absolute error between your answer and the standard answer is no more than
Sample Input
43 2 4 553 5 99 32 12
Sample Output
6.00000052.833333
题意不多描述了,很容易理解。
思路:对每个位置求总共出现的次数,然后和n!求一个比值,最终的结果就是第i个数乘以第i个比值,可是很巧妙的发现是第一个位置和最后一个位置总是1/2,中间的总是1/3
。所以当大于等于3的时候直接把两端乘以0.5,其他数乘以0.33333333就好,然后就是只有一个数的时候单独判断一下就好……
这份代码是推的公式算的,其实最终的结果都是两边是1/2,中间是1/3.
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <vector>using namespace std;int n;int a[100005];int main(){ while(~scanf("%d",&n)) { for(int i=0;i<n;i++) scanf("%d",&a[i]); double quan=0; if(n==1) { printf("%.6f\n",a[0]*1.0); } else if(n==2) { double sun=0; for(int i=0;i<2;i++) { sun+=a[i]/2.0; } printf("%.6f\n",sun); } else { quan=0; for(int i=2;i<n;i++) quan+=i*(i-1); quan/=n*(n-1)*(n-2); double sum=0; sum+=a[0]/2.0; sum+=a[n-1]/2.0; for(int i=1;i<n-1;i++) sum+=a[i]*quan; printf("%.6lf\n",sum); //cout<<"--quan: "<<quan<<endl; } } return 0;}
0 0
- hdu5753(2016多校第三场,数学题)
- HDU5753 Permutation Bo 多校联赛第三场
- 多校第三场
- 多校第三场
- 2016多校第三场 HDU 5755
- 2016多校联合第三场 HDU5760
- 多校第一场 1005 hdu 5292 Pocket Cube(数学题)
- hdu5753
- 多校联赛 第三场
- HDU 多校第三场
- 2013 多校第三场
- 多校第三场总结
- 多校联合第三场
- 多校联赛第三场
- 2016多校联合第三场 HDU5758 Explorer Bo
- 2016多校第三场 1004 HDU 5755 高斯消元
- hdu5762(2016多校第三场,思维题)
- hdu5754(2016多校第三场,博弈)
- Android DEX方法超过64K和gradle编译OOM解决方案
- 图解Android Studio 2.0安装步骤
- 110. Balanced Binary Tree
- (总结)CentOS Linux下VNC Server远程桌面配置详解
- 详解多旋翼飞行器的传感器技术
- hdu5753(2016多校第三场,数学题)
- 【POJ】-1979-Red and Black(DFS)
- 判断一个十进制数是几位数
- js 判断手机类型脚本
- 从内存的角度理解C语言
- poj3099
- 打包宝典PackageDoc
- 写在博客的最前面
- EditText和输入法相关的问题