[FFT] [HDU4609] 3-idiots
2017-05-29 22:41
239 查看
题目传送门
下面还是我的翻译
题目描述 Description
OMeGa国王抓住了三个在街上裸奔的人。虽然他们被看做是智障,这三个人坚持说只是一种行为艺术,然后乞求国王放了他们。出于对真正智障的仇恨,国王想测试一下他们是不是说谎了。这三个人被送到了国王的森林中,并且每个人都被要求依次捡一根树枝。如果他们带来的三根树枝能构成一个三角形,他们的数学能力就会解救他们。否则,他们就会蹲监狱……
然而,这三个确实是智障,并且他们会做的只是随机的选取树枝。当然他们不能捡相同的树枝(已经被取过的树枝)——但是与另一个相同长度的树枝是可以取得的。
给出森林里所有树枝的长度,计算他们获救的可能性。
输入 Input
输入的第一行会有一个整数T(T≤100),表示测试数据的组数;
每组数据以树枝数N(3≤N≤105)开始,下一行包含N个整数ai(1≤ai≤105),分别表示每个树枝的长度。
输出 Output
输出他们能够构成三角形的可能性,保留7位小数。
嗯构成三角形……需要满足的是两最小边之和大于第三边。
如果暴力的话是O(n3)的,过不去……
如果我们能搞出确定的两最小边之和有多少种方案,再拿第三边的方案数与其相乘不就好了?
嗯这种方法是O(n2)的还是过不去……
于是考虑构造一个单项式axb,其中a表示b长度的边的个数,那么a1a2xb1+b2中的a1a2就是我们想要的两最小边之和的方案数。
那么我们构造出来这样的一个多项式
∑i=1naixbi
对它平方,就可以在O(nlog2n)的时间搞出来所有我们想要的东西。
然后当然是要变化一下的。我们发现在统计中,可能出现一个边重复使用两次的情况,所以需要把它减去。又发现在统计中b1与b2边被重复计算了一次,所以得到的方案数应除以2。
然后就可以O(n)扫一遍第三边,把不合法的减去即可。
总时间复杂度为O(T(nlog2n+n))
Code
下面还是我的翻译
题目描述 Description
OMeGa国王抓住了三个在街上裸奔的人。虽然他们被看做是智障,这三个人坚持说只是一种行为艺术,然后乞求国王放了他们。出于对真正智障的仇恨,国王想测试一下他们是不是说谎了。这三个人被送到了国王的森林中,并且每个人都被要求依次捡一根树枝。如果他们带来的三根树枝能构成一个三角形,他们的数学能力就会解救他们。否则,他们就会蹲监狱……
然而,这三个确实是智障,并且他们会做的只是随机的选取树枝。当然他们不能捡相同的树枝(已经被取过的树枝)——但是与另一个相同长度的树枝是可以取得的。
给出森林里所有树枝的长度,计算他们获救的可能性。
输入 Input
输入的第一行会有一个整数T(T≤100),表示测试数据的组数;
每组数据以树枝数N(3≤N≤105)开始,下一行包含N个整数ai(1≤ai≤105),分别表示每个树枝的长度。
输出 Output
输出他们能够构成三角形的可能性,保留7位小数。
嗯构成三角形……需要满足的是两最小边之和大于第三边。
如果暴力的话是O(n3)的,过不去……
如果我们能搞出确定的两最小边之和有多少种方案,再拿第三边的方案数与其相乘不就好了?
嗯这种方法是O(n2)的还是过不去……
于是考虑构造一个单项式axb,其中a表示b长度的边的个数,那么a1a2xb1+b2中的a1a2就是我们想要的两最小边之和的方案数。
那么我们构造出来这样的一个多项式
∑i=1naixbi
对它平方,就可以在O(nlog2n)的时间搞出来所有我们想要的东西。
然后当然是要变化一下的。我们发现在统计中,可能出现一个边重复使用两次的情况,所以需要把它减去。又发现在统计中b1与b2边被重复计算了一次,所以得到的方案数应除以2。
然后就可以O(n)扫一遍第三边,把不合法的减去即可。
总时间复杂度为O(T(nlog2n+n))
Code
相关文章推荐
- [hdu4609]3-idiots(快速傅利叶变换FFT)
- [HDU4609]3-idiots(生成函数+FFT)
- HDU4609——3-idiots(FFT求卷积,留着以后学)
- hdu4609 3-idiots FFT
- 【FFT】HDU4609-3 idiots
- HDU4609 3-idiots(母函数 + FFT)
- HDU 4609 3-idiots (FFT-快速傅立叶变换)
- hdu4609 FFT+计数 经典
- HDU 4609 3-idiots(FFT)
- HDU 4609 3-idiots(组合数学+FFT)
- HDU 4609 3-idiots FFT
- HDU 4609 3-idiots(FFT,计数)
- hdu 4609 3-idiots(FFT)
- HDU 4609 3-idiots(多项式计数 + FFT卷积优化)
- HDU 4609 3-idiots FFT入门
- HDU 4609 3-idiots(FFT)
- HDU 4609 3-idiots (FFT-快速傅立叶变换)
- hdu 4609 3-idiots (FFT)
- 【FFT】 HDOJ 4609 3-idiots
- FFT 快速傅里叶变换 hdu1402 hdu4609