GEOTCBRL

再见啦

【51nod 1538】 一道难题 - n阶常系数线性递推

  题意:给定a,求

(ni=1aibi)=m(ni=1bi)!ni=1(bi!)

  m1018,ai[1,23333],bi0

【奇怪的背景】
  不知道多少天前。。。
  Q神:hgr你有 nlognlogk 求 n 阶线性递推第 k 项的板子吗
  我:好像没有啊。。。
  Q神:这个辣鸡51nod出了个裸题,写不动了
  于是看了波题。。。然后一脸懵逼???这怎么就线性递推了???
  然后这题就鸽了

  最近似乎比较有空。。。冷静一下之后推了一波这个题发现。。。怎么出个裸题啊
  这个式子看起来比较吓人。。其实是在搞笑。。。
  设Fm=(ni=1aibi)=m(ni=1bi)!ni=1(bi!)
  我们稍微加上个东西然后一波xjb变换
  

Fm=(ni=1aibi)=m(ni=1bi)!ni=1(bi!)nj=1bj[bj>0]ni=1bi  =j=1n(ni=1aibi)=m[bj>0](ni=1bi1)!ni=1(bi!)bj  =j=1n(ni=1aibi)=m[bj>0](ni=1bi1)!(bj1)!ij(bi!)  =j=1n(ni=1aibi)=m[bj10](ni=1bi1)!(bj1)!ij(bi!)  =j=1n(ni=1aibi)=maj[bj0](ni=1bi)!ni=1(bi!)

  因为bi0,所以直接有
  
Fm=i=1nFmai

  于是直接套n阶常系数齐次线性递推就行了。
  具体如何实现的话。。。叉姐论文和picks老师的博客有讲。。。这东西要完整地写出来不太好写。。。式子太多了= =
  而且这玩意写起代码来也是蛋疼的一b。。。
  
  有个东西我还不太清楚。。。比如现在递推式是fm=ni=1cifmi。。。然后要先求初值f0...fn对吧。。。然而似乎除了直接用生成函数搞个F(z)=11C(z)以外我没有想到别的复杂度更好的办法。。。(虽然这里多项式求逆和分治FFT速度好像没啥区别了hhhhh)
  然而这里一点都不瓶颈的样子→_→
  
  代码太丑了不贴了其实是TLE到现在弃疗了
  UPD:终于过了。。。辣鸡数据错了卡我这么久。。。有两个点的a_1是会大于23333的,要把他忽略掉。。。GTMD。。。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GEOTCBRL/article/details/54015444
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭