统计每种长度的木棒数量,先计算出两根棒子能构成的长度,想到卷积。1.拿这个序列卷积自己 2.计算重算的部分,首先是一条边自己和自己的这种情况,另一种是(i,j)和(j,i)这种形式。第一种,可以枚举读入的木棒长度,再长度为其二倍的位置-1;第二种,在第一种处理完之后,直接除2。计算出两根棒子能构成的长度后,我们枚举最长的那条边,答案一定在长度大于它的里面,但是要去掉算了自己的情况,和存在一条边大于最长边的情况。具体公式看代码。这题中间精度差了些就挂了。可以用long long就不要用double。

#include <bits/stdc++.h>
#define pi acos(-1.0)
const int maxn = 300000+5;
using namespace std;
typedef long long ll;
struct E{double real,imag;E(double real=0,double imag=0):real(real),imag(imag){}friend E operator +(E A,E B){return E(A.real+B.real,A.imag+B.imag);}friend E operator -(E A,E B){return E(A.real-B.real,A.imag-B.imag);}friend E operator *(E A,E B){return E(A.real*B.real-A.imag*B.imag,A.imag*B.real+A.real*B.imag);}
};
int n,m,mx,L,rev[maxn];
E f[maxn],rf[maxn],g[maxn],e1[maxn],e2[maxn];
void fft(E *a,int ty,int n){for(int i=0;i<n;++i)if(i<rev[i])swap(a[i],a[rev[i]]);for(int i=1;i<n;i<<=1){E wn=E(cos(pi/i),ty*sin(pi/i));for(int p=(i<<1),j=0;j<n;j+=p){E w(1,0);for(int k=0;k<i;++k,w=w*wn){E x=a[j+k],y=w*a[j+k+i];a[j+k]=x+y;a[j+k+i]=x-y;}}}if(ty==-1)for(int i=0;i<n;++i)a[i].real/=n;
}
E c[maxn];
int T;
ll e[maxn],F[maxn],b[maxn];
int main() {scanf("%d",&T);while(T--) {ll mx = 0;scanf("%lld",&n); L=0;memset(c,0,sizeof(c));memset(e,0,sizeof(e));memset(rev,0,sizeof(rev));memset(F,0,sizeof(F));for(int i=1;i<=n;++i) {scanf("%lld",&e[i]);++F[e[i]];mx = max(mx,e[i]);}m = mx*2;for(mx=1;mx<=m;mx<<=1)++L;for(int i=0;i<mx;++i)rev[i]=(rev[i>>1]>>1)|((i&1)<<(L-1));for(int i=0;i<mx;++i)c[i]=F[i];fft(c,1,mx);for(int i=0;i<mx;++i) c[i]=c[i]*c[i];fft(c,-1,mx);for(int i=0;i<mx;++i)b[i] = (ll)(c[i].real+0.5);for(int i=1;i<=n;++i) --b[e[i]<<1];for(int i=0;i<mx;++i) b[i]>>=1;for(int i=1;i<mx;++i) b[i]+=b[i-1];sort(e+1,e+1+n);ll ans = 0;for(int i=1;i<=n;++i){ans = ans + (ll)(b[mx-1]-b[e[i]]);ans -= (ll)(n-1LL);ans -= (ll)(n-i)*(i-1);ans -= (ll)(n-i)*(n-i-1LL)/2LL;}ll t = 1LL*n*(n-1LL)*(n-2LL)/6LL;printf("%.7f\n",1.0*ans/t);}
}

  

转载于:https://www.cnblogs.com/RRRR-wys/p/8967563.html

BZOJ 3513: [MUTC2013]idiots [FFT]相关推荐

  1. bzoj 3513: [MUTC2013]idiots FFT

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

  2. bzoj 3513: [MUTC2013]idiots【生成函数+FFT】

    想了好长时间最后发现真是石乐志 第一反应就是两边之和大于第三边,但是这个东西必须要满足三次-- 任意的两边之和合通过生成函数套路+FFT求出来(记得去掉重复选取的),然后这任意两边之和大于任意第三边可 ...

  3. 解题报告(二)E、(BZOJ3513) [MUTC2013] idiots(生成函数 + FFT + 组合计数)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  4. 2019.01.02 bzoj3513: [MUTC2013]idiots(fft)

    传送门 fftfftfft经典题. 题意简述:给定nnn个长度分别为aia_iai​的木棒,问随机选择3个木棒能够拼成三角形的概率. 思路:考虑对于木棒构造出生成函数然后可以fftfftfft出两个木 ...

  5. BZOJ.3527.[ZJOI2014]力(FFT)

    题目链接 \(Descripiton\) 给出\(q[\ ]\),\[F[j]=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_ ...

  6. BZOJ 4827 [Hnoi2017]礼物 ——FFT

    题目上要求一个循环卷积的最小值,直接破环成链然后FFT就可以了. 然后考虑计算的式子,可以分成两个部分分开计算. 前半部分FFT,后半部分扫一遍. #include <map> #incl ...

  7. bzoj 4827 [Hnoi2017]礼物——FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4827 式子就是 \sum_{i=0}^{n-1}(a[ i ] - b[ i+k ] + c ...

  8. bzoj 4624 农场种植 fft

    4624: 农场种植 Time Limit: 50 Sec  Memory Limit: 512 MB Submit: 48  Solved: 31 [Submit][Status][Discuss] ...

  9. bzoj 3527 [Zjoi2014]力——FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 把 q[ i ] 除掉.设 g[ i ] = i^2 ,有一半的式子就变成卷积了:另一 ...

最新文章

  1. GridView自定义分页样式(上一页,下一页,到第几页)(新手教程)
  2. java使用重绘实现拖动_原生JS使用Canvas实现拖拽式绘图功能
  3. 情绪管理的快速实践方法---视频学习记录
  4. [CF487E]Tourists
  5. Python入门基础知识学什么?
  6. 微信小程序组件通信入门及组件生命周期函数
  7. 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法
  8. PHP实现简单的计算器
  9. 简说 Python 生态系统的 14 年演变
  10. 电脑管理器地址栏 按右键会有的功能
  11. Rbf神经网络使用Tensorflow实现
  12. 百度在线笔试计算机视觉,[转载]2014 百度 计算机视觉笔试
  13. Java实现电脑屏幕的截取并保存成图片
  14. 01背包,完全背包的区别
  15. Beautifulsoup模块
  16. Wireshark基本介绍
  17. 如何学习MATLAB
  18. Windows 10磁盘修复工具Chkdsk新增的命令有哪些?赶快收藏
  19. Vue.config.productionTip = false 是什麽意思?
  20. java生成world文件_Java导出World文档(入门)

热门文章

  1. java让对象分配在栈上_java – Hotspot何时可以在堆栈上分配对象?
  2. c语言铁路托运行李费用图,3.为铁路部门编写计算运费的程序。假设铁路托运行李,规定每张客票托运费计算方法是:行李重量不超过50kg...
  3. 数据库年月日时分秒_数据库基本使用系列(二)
  4. centos amd双显卡_PCIe4.0和PCIe3.0对显卡性能差别大吗?
  5. 77. 组合016(回溯法)
  6. 台式计算机听音乐,配置一台4000元的台式电脑,主要用于日常办公及上网查资料,听音乐,看电影及学习....
  7. [SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole
  8. Spring5 jar包下载
  9. CF773F Test Data Generation(倍增FFT/动态规划)
  10. Codeforces Round #610 (Div. 2) D. Enchanted Artifact 交互 + 思维