题目链接

n个火柴棍取3个, 问能组成三角形的概率是多少。 kuangbin大神的博客写的很详细了..http://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html

注意long long什么的就没问题了。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mem(a) memset(a, 0, sizeof(a))
typedef complex <double> cmx;
const double PI = acos(-1.0);
const int maxn = ;
cmx x[maxn];
int a[maxn/];
ll num[maxn];
void change(cmx x[], int len) {
int i, j, k;
for(i = , j = len/; i < len - ; i++) {
if(i < j)
swap(x[i], x[j]);
k = len / ;
while(j >= k) {
j -= k;
k /= ;
}
if(j < k)
j += k;
}
}
void fft(cmx x[], int len, int on) {
change(x, len);
for(int i = ; i <= len; i <<= ) {
cmx wn(cos(-on * * PI/i), sin(-on * * PI/i));
for(int j = ; j < len; j += i) {
cmx w(, );
for(int k = j; k < j + i/; k++) {
cmx u = x[k];
cmx v = x[k + i/]*w;
x[k] = u + v;
x[k+i/] = u - v;
w *= wn;
}
}
}
if(on == -) {
for(int i = ; i < len; i++)
x[i] /= len;
}
}
int main()
{
int t, n;
cin>>t;
while (t--) {
cin>>n;
mem(num);
int maxx = ;
for (int i = ; i < n; i++) {
scanf("%d", a + i);
num[a[i]]++;
maxx = max(maxx, a[i]);
}
sort(a, a + n);
int len = ;
maxx++;
while (len < *maxx) {
len <<= ;
}
for (int i = ; i < maxx; i++) {
x[i] = cmx(num[i], );
}
for (int i = maxx; i < len; i++) {
x[i] = cmx(, );
}
fft(x, len, );
for (int i = ; i < len; i++) {
x[i] *= x[i];
}
fft(x, len, -);
for (int i = ; i < len; i++) {
num[i] = (ll)(x[i].real()+0.5);
}
for (int i = ; i < n; i++) {
num[a[i]+a[i]]--;
}
for (int i = ; i < len; i++) {
num[i] /= ;
}
for (int i = ; i < len; i++) {
num[i] += num[i-];
}
ll ans = ;
for (int i = ; i < n; i++) {
ans += num[len-] - num[a[i]];
ans -= 1LL * (n-i-) * i;
ans -= 1LL * (n-i-) * (n-i-) / ;
}
ans -= 1LL * n * (n-);
ll sum = 1LL * n * (n-) * (n-) / ;
printf("%.7f\n", 1.0*ans/sum);
}
return ;
}

hdu 4906 3-idiots fft的更多相关文章

  1. bzoj 3513: [MUTC2013]idiots FFT

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

  2. HDU 4906 Our happy ending (状压DP)

    HDU 4906 Our happy ending pid=4906" style="">题目链接 题意:给定n个数字,每一个数字能够是0-l,要选当中一些数字.然 ...

  3. hdu 5142 NPY and FFT

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5142 NPY and FFT Description A boy named NPY is learn ...

  4. HDU 4609 3-idiots(FFT)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4609 题意:给出n个正整数(数组A).每次随机选出三个数.问这三个数能组成三角形的概率为多大? 思路: ...

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

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

  6. hdu 5730 Shell Necklace fft+cdq分治

    题目链接 dp[n] = sigma(a[i]*dp[n-i]), 给出a1.....an, 求dp[n]. n为1e5. 这个式子的形式显然是一个卷积, 所以可以用fft来优化一下, 但是这样也是会 ...

  7. HDU 4609 3-idiots (组合数学 + FFT)

    题意:给定 n 条边,问随机选出 3 条边,能组成三角形的概率是多少. 析:答案很明显就是  能组成三角形的种数 / (C(n, 3)).现在的问题是怎么求能组成三角形的种数. 这个博客说的非常清楚了 ...

  8. BZOJ3513[MUTC2013]idiots——FFT+生成函数

    题目描述 给定n个长度分别为a_i的木棒,问随机选择3个木棒能够拼成三角形的概率. 输入 第一行T(T<=100),表示数据组数. 接下来若干行描述T组数据,每组数据第一行是n,接下来一行有n个 ...

  9. [MUTC2013][bzoj3513] idiots [FFT]

    题面 传送门 思路 首先有一个容斥原理的结论:可以组成三角形的三元组数量=所有三元组-不能组成三角形的三元组 也就是说我们只要求出所有不能组成三角形的三元组即可 我们考虑三元组(a,b,c),a< ...

随机推荐

  1. JQuery中阻止事件冒泡的两种方式及其区别

    JQuery 提供了两种方式来阻止事件冒泡. 方式一:event.stopPropagation(); $("#div1").mousedown(function(event){ ...

  2. js 对日期加减

    function getDate(days) { var now = new Date(), newDate = new Date(now.getTime() - 86400000 * days), ...

  3. 禁用谷歌字体解决WordPress访问速度过慢问题

    这几天打开网站的时候发现突然变慢了,一直等待加载fonts.googleapis.com,搜索了一下发现很多wordpress网站都出现了 这种现象,原来是因为今日谷歌全线退出中国,貌似谷歌.Gmai ...

  4. 管理Activity,随时随地控制Activity的销毁工作

    public class ActivityManager { public static List<Activity> activityList = new ArrayList<Ac ...

  5. Ubuntu14.04LST 安装Oracle SQL Developer 4.0.2

    1:Oracle SQL Developer 4.0.2下载链接: http://www.oracle.com/technetwork/developer-tools/sql-developer/do ...

  6. javascript之数组

    一.定义数组. 定义数组有两个方法: 1.var arr1 = []; //定义一个空数组 2.var arr2 = [1,2,3,"str1","str2"] ...

  7. Path Sum II 解答

    Question Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the ...

  8. Cdev

    1,#和##操作符Operator,使用 首个参数返回为一个带引号的字符串 predefined variable was not declared in the scope;

  9. bash及其特性(笔记)

    bash及其特性:shell: 外壳GUI:Gnome, KDE, XfceCLI: sh, csh, ksh, bash, tcsh, zsh root, student程序:进程 进程:在每个进程 ...

  10. Tomcat可以在eclipse里启动,可是不能訪问首页的问题

    今天在使用eclipse的时候发现一个问题.就是我在eclipse里面已经启动了tomcat.部署上去的项目也能够启动,可是就是没法訪问tomcat的首页.port等等都没有问题. 后来查到解决方式, ...