码迷,mamicode.com
首页 > 其他好文 > 详细

【hdu4609】 3-idiots FFT

时间:2018-01-06 15:50:50      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:情况   sum   时间   传送门   size   tar   ext   数组   时间复杂度   

题外话:好久没写blog了啊~~

题目传送门

题目大意:给你n条长度为ai的线段,求在其中任选三条出来,能构成三角形的概率。即求在这n条线段中找出三条线段所能拼出的三角形数量/c(n,3)。

假设我们手中有3条长度分别为$x,y,z$的边(为了简化问题我们假设$x<y<z$,$x,y,z$相等的情况另行讨论),如果他们能拼成三角形,必然满足$x+y>z$且$z-y<x$。

该题的$O(n^3)$做法:枚举其中的3条边,套用上面的判断公式,进行累计。

但通过简单的变式,我们假设我们已经确定了$x$和$y$,那么$z$的范围即为$[x,x+y)$,我们维护一个数组$num$,$num_i$表示长度为i的线段数量。再维护一个num的前缀和sum。则$ans=\sum^{n-1}_{x=1}  \sum^{n}_{y=x+1} num_x * num_y*(sum[x+y-1]-sum[y])$,运算该和式的时间复杂度为$O(n^2)$

 

【hdu4609】 3-idiots FFT

标签:情况   sum   时间   传送门   size   tar   ext   数组   时间复杂度   

原文地址:https://www.cnblogs.com/xiefengze1/p/8214112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!