hdu4609 3-idiots
2015-08-12 22:10
253 查看
FFT
代码
代码
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #include<complex> using namespace std; const int N = 400005; const double PI = acos(-1.0); typedef complex<double> Comp; Comp a ,b ; int len,l,n,i,v,c ; long long ans ; double Ans,nn; void Rader(Comp *F,int len) { int j = len >> 1; for (int i=1;i<len-1;i++) { if (i<j) swap(F[i],F[j]); int k = len>>1; while (j >= k) { j -= k; k >>= 1; } if (j < k) j += k; } } void FFT(Comp *F,int len,int on) { Rader(F,len); for (int h=2;h<=len;h<<=1) { Comp wn(cos(-on*2*PI/h),sin(-on*2*PI/h)); for (int j=0;j<len;j+=h) { Comp w(1,0); for (int k=j;k<j+h/2;k++) { Comp u = F[k]; Comp t = w*F[k + h / 2]; F[k] = u + t; F[k + h / 2] = u - t; w = w * wn; } } } if (on == -1) for (int i=0;i<len;i++) F[i]/=len; } void Conv(Comp *a,Comp *b,int len) { FFT(a,len,1); FFT(b,len,1); for (int i=0;i<len;i++) a[i] =a[i]*b[i]; FFT(a,len,-1); for (int i=0;i<len;i++) ans[i]=a[i].real()+0.5; } int main() { int test; scanf("%d",&test); while (test) { test--; scanf("%d",&n); l=0; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for (i=1;i<=n;i++) { scanf("%d",&v); c[i]=v; int q=a[v].real()+1; a[v].real(q); b[v].real(q); l=max(l,v); } len=1; while (len<=l*2) len*=2; Conv(a,b,len); for (i=1;i<=n;i++) ans[c[i]+c[i]]--; for (i=0;i<len;i++) ans[i]/=2; for (i=1;i<len;i++) ans[i]=ans[i-1]+ans[i]; sort(c+1,c+1+n); nn=n; Ans=0; for (i=1;i<=n;i++) Ans+=(ans[len-1]-ans[c[i]]-(nn-1)-(nn-i)*(i-1)-(nn-i)*(nn-i-1)/2); printf("%.7lf\n",Ans/(nn*(nn-1)*(nn-2)/6)); } }
相关文章推荐
- 智能设备是如何连接云的
- 如何应用MQTT协议到物联网中(IOT)
- 物联网
- 物联网架构演进和微信智能设备平台开发
- 【Windows 10 IoT - 3】Windows 10 RTM安装及新特性(树莓派 Pi2)
- Windows 10 IoT Serials 2 - Windows 10 IoT RTM 升级教程
- BZOJ3513: [MUTC2013]idiots
- 物联网带来晋升机会 首席物联官成急缺职位
- 能屈能伸的“物”,弹性物联网能力的意义
- 五招教你打造成物联网的共同威胁
- 物联网产品:你需要知道的9种智能家居产品
- [2015/07/23] TI杯物联网设计大赛备案 - First Problem -
- 【译】VisionMobile:了解物联网,你需要了解Zenefits
- UVa 10881 Piotr’s Ants
- 物联网的无线技术(1)
- 物联网的发展前途
- iotop命令详解
- 一小时快速搭建最小的物联网系统
- iotop记录到文本
- HDU 4609 3-idiots FFT+计数问题