Processing math: 100%
【BZOJ2212】【Poi2011】Tree Rotations
【BZOJ1221】【HNOI2001】软件开发

【BZOJ3509】【CodeChef】COUNTARI

Zarxdy34 posted @ 2016年2月28日 12:40 in BZOJ with tags 生成函数 FFT 分块 , 673 阅读

  暴力优化一下是n^2的,但这样并不能过。

  标算好像是分块做,设每块的大小为V。

  对于三个数都在同一块内以及只有一个数在块外的情况,用暴力优化处理,时间复杂度nVV2=nV

  对于中间数在块内的情况,设这个块的范围是[L,R],对所有的ai(i<L)ai(i>R)分别构造生成函数并相乘,得到多项式,指数表示两数之和,系数表示方案数。然后枚举每个块内的数,看它作为中间数的方案有多少个并加入答案。

  这一步需要用FFT,所以时间复杂度为nmaxalogmaxaV,取个合适的V就好了。

  刚开始我用NTT来做,发现本机上跑得飞快,linux下也跑得飞快,然而交上去就是T。后来改成复数运算后A了。事实证明long long+取模运算在某些地方是不能乱用的。

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter