热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:HDU47093idiotsFFT多项式

http://acm.hdu.edu.cn/showproblem.php?pid=4609给一堆边,求这一堆边随便挑三个能组成三角形的概率。

http://acm.hdu.edu.cn/showproblem.php?pid=4609

给一堆边,求这一堆边随便挑三个能组成三角形的概率。

裸fft,被垃圾题解坑了还以为很难。

最长的边的长度小于其余两边之和是组成三角形的充要条件,fft搞搞就行了。

技术分享图片技术分享图片

1 #include<iostream>
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std;
8 #define LL long long
9 const int maxn=530010;
10 double Pi;
11 typedef complex<double >cd;
12 cd b[maxn]={};
13 LL a[maxn]={},cnt[maxn]={};
14 int bel[maxn]={},s,bt;
15 void getit(){for(int i=0;i>1]>>1)|((i&1)<<(bt-1));}
16 void fft(cd *c,int n,int dft){
17 for(int i=0;iif(bel[i]>i)swap(c[i],c[bel[i]]);
18 for(int step=1;step1){
19 cd w=cd(cos(Pi/(double)step),sin(Pi/(double)step)*(double)dft);
20 for(int j=0;j1)){
21 cd z=cd(1.0,0);
22 for(int i=j;ii){
23 cd x=c[i],y=c[i+step]*z;
24 c[i]=x+y;c[i+step]=x-y;
25 z=z*w;
26 }
27 }
28 }
29 if(dft==-1)for(int i=0;in;
30 }
31 int main(){
32 Pi=acos(-1.0);
33 int T;scanf("%d",&T);
34 while(T-->0){
35 int n;scanf("%d",&n);
36 memset(cnt,0,sizeof(cnt));
37 for(int i=0;i"%d",&a[i]);cnt[a[i]]+=1;}
38
39 sort(a,a+n); int siz=a[n-1]+1;
40 for(int i=0;i0);
41 for(int i=siz;i0,0);
42
43 siz*=2; bt=1; s=2; for(;s1; getit();
44 fft(b,s,1);
45 for(int i=0;ib[i];
46 fft(b,s,-1);
47 for(int i=0;i<=s;++i)cnt[i]=(LL)(b[i].real()+0.5);
48 for(int i=0;i0,0);
49
50 s=a[n-1]*2;
51 for(int i=0;i2];
52 for(int i=1;i<=s;++i)cnt[i]/=2;
53 for(int i=1;i<=s;++i)cnt[i]+=cnt[i-1];
54
55 LL ans=0;
56 for(int i=0;ii){
57 ans+=cnt[s]-cnt[a[i]];
58 ans-=(LL)(n-1-i)*i;
59 ans-=n-1;
60 ans-=(LL)(n-1-i)*(n-i-2)/2;
61 }
62 LL sum=(LL)n*(n-1)*(n-2)/6;
63 printf("%.7f
",(double)(ans)/(double)(sum));
64 }
65 return 0;
66 }


View Code

 


推荐阅读
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • 题目概述:Sereja 拥有一个由 n 个整数组成的数组 a1, a2, ..., an。他计划执行 m 项操作,这些操作包括更新数组中的特定元素、增加数组中所有元素的值,以及查询数组中的特定元素。 ... [详细]
  • 题目描述:Balala Power! 时间限制:4000/2000 MS (Java/Other) 内存限制:131072/131072 K (Java/Other)。题目背景及问题描述详见正文。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 本文旨在探讨Swift中的Closure与Objective-C中的Block之间的区别与联系,通过定义、使用方式以及外部变量捕获等方面的比较,帮助开发者更好地理解这两种机制的特点及应用场景。 ... [详细]
  • 本文介绍了一个来自AIZU ONLINE JUDGE平台的问题,即清洁机器人2.0。该问题来源于某次编程竞赛,涉及复杂的算法逻辑与实现技巧。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
author-avatar
重庆车管所
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有