热门标签 | 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

 


推荐阅读
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 本文介绍如何使用线段树解决洛谷 P1531 我讨厌它问题,重点在于单点更新和区间查询最大值。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 多线程基础概览
    本文探讨了多线程的起源及其在现代编程中的重要性。线程的引入是为了增强进程的稳定性,确保一个进程的崩溃不会影响其他进程。而进程的存在则是为了保障操作系统的稳定运行,防止单一应用程序的错误导致整个系统的崩溃。线程作为进程的逻辑单元,多个线程共享同一CPU,需要合理调度以避免资源竞争。 ... [详细]
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社区 版权所有