2017NOIP模拟赛三 A酱的体育课


 

据说改编自$CodeM 美团点评编程大赛初赛A 轮$

简单的水题。。。考试的时候没想到,xjb打了暴力。

显然,第$x$个人排在第$y$个位置的情况总数为$(n-1)!$,在这些情况中,第$x$人对答案的贡献是相同的,记为$p_{x,y}$。

总的情况数是$n!$,故答案为$$\frac{\sum p_{x,y}}{n}$$

看起来挺水的,结论出来逆元组合数什么的都不用求打上去就好了。

代码:

 1 #include<cstring>
 2 #include<cmath>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #define foru(i,x,y) for(int i=x;i<=y;i++)
 6 using namespace std;
 7 
 8 const int N=1e6+10;
 9 double v,u,c[N],d[N],ans;
10 int n;
11 int main(){
12     freopen("pe.in","r",stdin);freopen("pe.out","w",stdout);
13     scanf("%d%lf%lf",&n,&v,&u);
14     foru(i,1,n)scanf("%lf",c+i);
15     foru(i,1,n)scanf("%lf",d+i);
16     foru(i,1,n){
17         foru(k,1,n){
18             double j=n-k+1;
19             ans+=u*n/(c[i]-(j-1)*d[i]-v);
20         }
21     }
22     printf("%.3lf",ans/n);
23     return 0;
24 }

 

posted @ 2017-09-29 13:33  羊毛羊  阅读(330)  评论(0编辑  收藏  举报