当 L[i] 为最长边时,首先要知道两数之和比 L[i] 大的方案数,其实就是 Sigma(a(L[i]+1) ... a[2m] ),这个可以通过计算前缀和 sum[] 来 O(1) 实现。但是这其中有些方案中 L[i] 不是最长边,或者 L[i] 在之前就已经被选掉了,那么就要去掉这些情况:(1)两边都比 L[i] 大,为 C(n - i...
HDU-4609 3-idiots FFT 题意 给定$n$ 根木棍,每根木棍有一长度$a[i]$ ,问任意选出三根木棍,可以组成三角形的概率 \[ T \leq 100,3\leq n \leq 10^5 ,1\leq a_i \leq 10^5 \] 分析 此题属于$FFT$入门模板题 这题刚开
HDU 4609 3-idiots(FFT+容斥) 题意:给你n个边长,从中任意选择三个,问你能组成三角形的概率是多少?(同一个边长只能选择一次) 题解:会了FFT,这题就好做多了,首先我们开一个num数组,记录每种长度出现的次数。 然后对num数组进行DFT变换,再让其num[i]*num[i],此时数组的意义就是从若干边中选择两条边所能 ...
HDU 4609 3-idiots(FFT) 3-idiots 思路 多项式卷积的经典应用了: 看样例一: 4 1 3 3 4 1. 2. 我们用多项式系数表示得到一个与 a i a_i ai有关的多项式: 0 1 0 2 1 0\ 1\ 0\ 2\ 1 0 1 0 2 1, 也就说明原序列有0个1,1个1,0个2,2个3,1个4, 这个多项式卷积之后得到:0 0 1...
HDU-4609-FFT 题目大意:给定n条线段,任取三根,问能够组成三角形的概率; 题目解析:首先三角形肯定是两边之后大于第三边,为此我们需要处理出任意两边的和以及方案数,朴素算法肯定是O(N^2)会超时,所以我们需要用到fft降到O(NlogN);然后预处理出前缀和,枚举每条边作为最大值的时候,需要剪去一个大,一个小的情况...
hdu 4609 3-idiots [fft 生成函数 计数] hdu 4609 3-idiots 题意: 给出\(A_i\),问随机选择一个三元子集,选择的数字构成三角形的三边长的概率。 一开始一直想直接做... 先生成函数求选两个的方案(注意要减去两次选择同一个的,然后/2),然后统计三角形个数。 枚举三角形最长边,求\(i+j>k,i<k,j...
HDU-4609(FFT/NTT) 题意: 给出n个木棒,现从中不重复地选出3根来,求能拼出三角形的概率. 计算合法概率容易出现重复,所以建议计算不合法方案数 枚举选出的最大边是哪条,然后考虑剩下两条 ... HDU4609 FFT+组合计数 HDU4609 FFT+组合计数 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4609 题...
HDU 4609 3-idiots (FFT) 题目传送门哦 写在前面 做题感想 一道FFT果题写了一个中午,调了一个下午,题目还叫3-idiots,我感觉自己就是一idiot。。。 关于快速傅立叶变换(FFT) 蒟蒻我的理解: FFT就是通过点值、插值等步骤将O(n2)的多项式乘法(或者说卷积)优化到O(nlogn)的算法。
快速傅里叶变化有不同的应用场景,hdu4609就比较有意思。题目要求是给n个线段,随机从中选取三个,组成三角形的概率。初始实在没发现这个怎么和FFT联系起来,后来看了下别人的题解才突然想起来:组合计数问题可以用多项式的卷积来解决。于是将给的数据进行卷积相乘,利用FFT
[hdu4609]计数方法,FFT 题目:给一个数组a,从里面任选三个数,求以这三个数为三条边能构成三角形的概率。 思路:由于每个数只能用一次,所以考虑枚举三边中的最大边。先将a数组排序,然后枚举它的每个数x作为最大边,那么问题就是要求在数组a剩余的数里面“找小于等于x”且“和大于x”的数对个数,答案显然不能...