[FFT] [HDU5307] He is Flying
2017-05-29 02:57
225 查看
题目传送门。
假如大家烦E文,下面是我的翻译版……
(假如翻译也不想看请直接跳到题解部分……又XJB翻译)
题目描述 Description
劼劼劼想沿着一条漫长的路飙车,这条路有n段,第i段有一非负整数的长度si。劼劼劼将选择一些连续部分在上面飙车(以一个不可思议的速度),所以共有n×(n−1)2种不同方法飙。如果劼劼劼从第i段飙到第j段,他将获得j−i+1点兴奋值。现在劼劼劼想知道,如果他尝试所有长为s的路,它能获得的总兴奋值是多少。请注意在本题中,一段路的长度可以是0,意味着长度太短可以认为是0。
输入 Input
第一行为单独的一个整数T(T=5),表示测试数据组数。
对于每组数据,第一行包含一个整数n。第二行包含n个非负整数,表示每段的长度。如果我们把每段路的总长度表示为s,我们保证0≤s≤5×104,1≤n≤105。
输出 Output
对于每组数据输出s+1行,第i行的单独一个整数表示如果劼劼劼能飙完所有i−1长的路,他能获得的总兴奋值。
嗯,吉司机……
第一眼没思路,第二眼没思路,……,第n眼没思路。
这种题一定是构造题(经验+2)。
很容易想到前缀和,记前缀和为S,这样就需要把Sj−Si−1构造进去,然后发现下标之差j−i+1还是兴奋值,这样怎么构造呢?
考虑这样的一个单项式(j−i+1)xSj−Si−1,可以通过两个多项式乘积做差得到。
(∑i=1nixSi)(∑i=1nx−Si−1)−(∑i=1nxSi)(∑i=1n(i−1)x−Si−1)
证明可以拆开来看,可以看出是完美的构造出需要的单项式的。
但是有两个问题,一个是0需要特判,在处理之前O(n)扫一遍即可,还有是指数的负数问题,可以用Sn调整零点实现。
构造第一题……
(真是看脸)
时间复杂度O(Tnlog2n)。(其实是O(TSnlog2Sn)但是做到最后Sn与n同阶了)
需要使用long double才能通过。
PoPoQQQ:“对于模一个数的计数问题必须用NTT。”
题解并没用FFT而是把模数取得非常大用CRT合并了一遍NTT……
Code
假如大家烦E文,下面是我的翻译版……
(假如翻译也不想看请直接跳到题解部分……又XJB翻译)
题目描述 Description
劼劼劼想沿着一条漫长的路飙车,这条路有n段,第i段有一非负整数的长度si。劼劼劼将选择一些连续部分在上面飙车(以一个不可思议的速度),所以共有n×(n−1)2种不同方法飙。如果劼劼劼从第i段飙到第j段,他将获得j−i+1点兴奋值。现在劼劼劼想知道,如果他尝试所有长为s的路,它能获得的总兴奋值是多少。请注意在本题中,一段路的长度可以是0,意味着长度太短可以认为是0。
输入 Input
第一行为单独的一个整数T(T=5),表示测试数据组数。
对于每组数据,第一行包含一个整数n。第二行包含n个非负整数,表示每段的长度。如果我们把每段路的总长度表示为s,我们保证0≤s≤5×104,1≤n≤105。
输出 Output
对于每组数据输出s+1行,第i行的单独一个整数表示如果劼劼劼能飙完所有i−1长的路,他能获得的总兴奋值。
嗯,吉司机……
第一眼没思路,第二眼没思路,……,第n眼没思路。
这种题一定是构造题(经验+2)。
很容易想到前缀和,记前缀和为S,这样就需要把Sj−Si−1构造进去,然后发现下标之差j−i+1还是兴奋值,这样怎么构造呢?
考虑这样的一个单项式(j−i+1)xSj−Si−1,可以通过两个多项式乘积做差得到。
(∑i=1nixSi)(∑i=1nx−Si−1)−(∑i=1nxSi)(∑i=1n(i−1)x−Si−1)
证明可以拆开来看,可以看出是完美的构造出需要的单项式的。
但是有两个问题,一个是0需要特判,在处理之前O(n)扫一遍即可,还有是指数的负数问题,可以用Sn调整零点实现。
构造第一题……
(真是看脸)
时间复杂度O(Tnlog2n)。(其实是O(TSnlog2Sn)但是做到最后Sn与n同阶了)
需要使用long double才能通过。
PoPoQQQ:“对于模一个数的计数问题必须用NTT。”
题解并没用FFT而是把模数取得非常大用CRT合并了一遍NTT……
Code
相关文章推荐
- hdu5307 He is Flying FFT
- HDU5307 He is Flying(FFT)
- [hdu5307] He is Flying [FFT+数学推导]
- hdu 5307 He is Flying [FFT]
- HDU5307 He is Flying
- HDU 5307 He is Flying【FFT】
- HDU5307 He is Flying
- HDU 5307 He is Flying ——FFT
- hdu5307 He is Flying [cdq分治+FFT]
- hdu 5307 He is Flying
- 多校第二场1008 He is flying
- hdu 5307 He is Flying 2015 Multi-University Training Contest 2 快速傅里叶变换
- 【HDU】5307 He is Flying【分别统计+NTT】
- HDU 5307 He is Flying 构造多项式+FFT
- 408. The fox knew too much, that is how he lost his tail. 机关算尽太聪明,反误了卿卿性命
- USACO 1.1 你的飞碟在这儿Your Ride Is He…
- He is a walking dictionary
- 启动Tomcat错误:he JRE_HOME environment variable is not
- He who hesitates is Lost