hdu_5753_Permutation Bo(找规律)
题意:
给你一个有n个数的数列c1~cn,h1~hn为1~n的排列,求ci[hi>hi-1 and hi>hi+1]的期望和。
题解:
这题意思就是让你先列出一个hi的排列,然后如果满足(hi>hi-1 and hi>hi+1)的值为1,那么c[i]这个值就能取,然后我们把第一个样例的全部情况列出来,模拟一下答案,发现公式就是(c[1]+c[n])/3+(c[2]+...+c[n-1])/2;
最后特判一下n=1和2的情况
1 #include<cstdio> 2 double a[1010]; 3 int main() 4 { 5 int n; 6 while(~scanf("%d",&n)) 7 { 8 for(int i=1;i<=n;i++)scanf("%lf",a+i); 9 if(n==1){printf("%.6lf\n",a[1]);continue;} 10 if(n==2){printf("%.6lf\n",(a[1]+a[2])/2);continue;} 11 double ans=(a[1]+a[n])/2,tp=0; 12 for(int i=2;i<n;i++)tp+=a[i]; 13 ans+=tp/3; 14 printf("%.6lf\n",ans); 15 } 16 return 0; 17 }