FFT

代码

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<complex>
using namespace std;
const int N = ;
const double PI = acos(-1.0);
typedef complex<double> Comp;
Comp a[N],b[N];
int len,l,n,i,v,c[N];
long long ans[N];
double Ans,nn;
void Rader(Comp *F,int len)
{
int j = len >> ;
for (int i=;i<len-;i++)
{
if (i<j) swap(F[i],F[j]);
int k = len>>;
while (j >= k)
{
j -= k;
k >>= ;
}
if (j < k) j += k;
}
}
void FFT(Comp *F,int len,int on)
{
Rader(F,len);
for (int h=;h<=len;h<<=)
{
Comp wn(cos(-on**PI/h),sin(-on**PI/h));
for (int j=;j<len;j+=h)
{
Comp w(,);
for (int k=j;k<j+h/;k++)
{
Comp u = F[k];
Comp t = w*F[k + h / ];
F[k] = u + t;
F[k + h / ] = u - t;
w = w * wn;
}
}
}
if (on == -)
for (int i=;i<len;i++)
F[i]/=len;
}
void Conv(Comp *a,Comp *b,int len)
{
FFT(a,len,);
FFT(b,len,);
for (int i=;i<len;i++)
a[i] =a[i]*b[i];
FFT(a,len,-);
for (int i=;i<len;i++)
ans[i]=a[i].real()+0.5;
}
int main()
{
int test;
scanf("%d",&test);
while (test)
{
test--;
scanf("%d",&n);
l=;
memset(a,,sizeof(a));
memset(b,,sizeof(b));
for (i=;i<=n;i++)
{
scanf("%d",&v);
c[i]=v;
int q=a[v].real()+;
a[v].real(q);
b[v].real(q);
l=max(l,v);
}
len=;
while (len<=l*) len*=;
Conv(a,b,len);
for (i=;i<=n;i++)
ans[c[i]+c[i]]--;
for (i=;i<len;i++)
ans[i]/=;
for (i=;i<len;i++)
ans[i]=ans[i-]+ans[i];
sort(c+,c++n);
nn=n;
Ans=;
for (i=;i<=n;i++)
Ans+=(ans[len-]-ans[c[i]]-(nn-)-(nn-i)*(i-)-(nn-i)*(nn-i-)/);
printf("%.7lf\n",Ans/(nn*(nn-)*(nn-)/));
}
}

hdu4609 3-idiots的更多相关文章

  1. [HDU4609]3-idiots(生成函数+FFT)

    3-idiots Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. HDU4609 & FFT

    关于这道题请移步kuangbin爷的blog:http://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html 感觉我一辈子也不能写出这么 ...

  3. HDU4609 3-idiots(母函数 + FFT)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4609 Description King OMeGa catched three men wh ...

  4. bzoj 3513: [MUTC2013]idiots FFT

    bzoj 3513: [MUTC2013]idiots FFT 链接 bzoj 思路 参考了学姐TRTTG的题解 统计合法方案,最后除以总方案. 合法方案要不好统计,统计不合法方案. \(a+b< ...

  5. bzoj千题计划168:bzoj3513: [MUTC2013]idiots

    http://www.lydsy.com/JudgeOnline/problem.php?id=3513 组成三角形的条件:a+b>c 其中,a<c,b<c 若已知 两条线段之和=i ...

  6. bzoj 3513 [MUTC2013]idiots FFT 生成函数

    [MUTC2013]idiots Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 806  Solved: 265[Submit][Status][Di ...

  7. idiots

    idiots 题目描述 给定 $n$ 个长度分别为 $a_i$ 的木棒,问随机选择 $3$ 个木棒能够拼成三角形的概率. 输入格式 第一行一个正整数 nn. 第二行 nn 个正整数,第 ii 个数表示 ...

  8. BZOJ 3513: [MUTC2013]idiots

    3513: [MUTC2013]idiots Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 476  Solved: 162[Submit][Stat ...

  9. HDU-4609(FFT/NTT)

    HDU-4609(FFT/NTT) 题意: 给出n个木棒,现从中不重复地选出3根来,求能拼出三角形的概率. 计算合法概率容易出现重复,所以建议计算不合法方案数 枚举选出的最大边是哪条,然后考虑剩下两条 ...

  10. HDU4609 FFT+组合计数

    HDU4609 FFT+组合计数 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4609 题意: 找出n根木棍中取出三根木棍可以组成三角形的概率 题解: ...

随机推荐

  1. ubuntu如何开启root,如何启用Ubuntu中root帐号

    jingyan.baidu.com/article/495ba84116104238b20ede62.html ubuntu如何开启root,如何启用Ubuntu中root帐号 | 浏览:8344 | ...

  2. CDH商业版本的搭建(hadoop+hive+sqoop)

    一:准备工作 1.步骤 1)hadoop ->下载解压 ->修改配置文件 ->hadoop-env JAVA_HOME ->core-site fs.defaultFS had ...

  3. ZooKeeper Recipes and Solutions 翻译

    ZooKeeper 秘诀 与解决方案 A Guide to Creating Higher-level Constructs with ZooKeeper Out of the Box Applica ...

  4. C++ 简单中文敏感词检测工具类

    具体思路: 1->敏感词库,可从数据库读取,也可以从文件加载. 2->将敏感词转化为gbk编码,因为gbk严格按照字符一个字节,汉字两个字节的格式编码,便于容易切分文字段. 3->将 ...

  5. 解析const

    const在函数前与函数后的区别 一   const基础         如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:         int   b   =   500; ...

  6. [LeetCode]题解(python):088 Merge Sorted Array

    题目来源 https://leetcode.com/problems/merge-sorted-array/ Given two sorted integer arrays nums1 and num ...

  7. oracle入门-%的用法

    vempno emp.empno%type; 例如上面的这句话,你的vempno就是你定义的变量,和面的那个emp是你数据库里面存在的表,他的表里面有意个empno字段,然后%type就是empno的 ...

  8. java.lang.IllegalArgumentException: No converter found for return value of type: class Person

    在http://www.cnblogs.com/winner-0715/p/6033462.html我们讲到三个条件就能实现SpringMVC返回json的功能 但是按照这三个条件配置后,运行出现了错 ...

  9. Java私有构造函数不能阻止继承

    下面是一个调用已经私有化的单列的函数的列子. 这里用了静态内部类,关键就是静态内部类可以访问外部类的私有构造函数. 这种算是变种继承吧.前提是可以在原来的单列类里添加代码. class Single ...

  10. Python处理时间 time && datetime 模块

    Python处理时间 time  &&  datetime 模块 个人整理,获取时间方式: import datetime import time #获取当前时间:Thu Nov 03 ...