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 }