考场上就随便莽了个 Θ(k2log⁡r)\Theta(k^2\log r)Θ(k2logr) 的做法发现反正能过,就不管了……直到最近又提起这道题。

事情的经过其实是这样的……偶然看到了 cz_xuyixuan 用 BM 直接给莽过去了,感到有点诧异,于是就冷静了一下,发现这道题的特征根有很强的性质:

  • 对于 T=2T=2T=2 的部分,因为递推式是 x2−x−1x^2-x-1x2−x−1,所以两个特征根的乘积是 −1-1−1。
  • 对于 T=3T=3T=3 的部分,因为递推式是 x2−4x+1x^2-4x+1x2−4x+1,所以两个特征根的乘积是 111。

所以,我们原以为 αiβj\alpha^i \beta^jαiβj 总共有 Θ(k2)\Theta(k^2)Θ(k2) 种,但是在此题中只有 Θ(k)\Theta(k)Θ(k) 种……

那么如何做到更快就呼之欲出了,我们只需要算出每个 αiβj\alpha^i\beta^jαiβj 的系数就行了。

  • 对于 T=3T=3T=3 的情况,因为 αβ=1\alpha\beta = 1αβ=1,我们欲求 ∑n(λαn+μα−nk)\displaystyle\sum_n \binom{\lambda \alpha^n + \mu \alpha^{-n}} kn∑​(kλαn+μα−n​) 表为 ∑−k≤j≤kνjαjn\displaystyle\sum_{-k\le j\le k} \nu _j \alpha^{jn}−k≤j≤k∑​νj​αjn 的系数 νj\nu_jνj​,只需计算 1k!∏i=0k−1(λx−i+μx−1)\displaystyle\frac1{k!}\prod_{i=0}^{k-1} (\lambda x - i + \mu x^{-1})k!1​i=0∏k−1​(λx−i+μx−1) 的系数表示,可以 O(klog⁡2k)O(k \log^2 k)O(klog2k)。

  • 对于 T=2T=2T=2 的情况,因为 αβ=−1\alpha \beta = -1αβ=−1,我们所求可以表为 ∑−k≤j≤kξjαjn+ζj(−α)jn\displaystyle \sum_{-k \le j\le k} \xi_j \alpha^{jn} + \zeta _j (-\alpha)^{jn}−k≤j≤k∑​ξj​αjn+ζj​(−α)jn,只需计算 1k!∏i=0k−1(λx−i+μx−1t)mod(t2−1)\displaystyle\frac1{k!}\prod_{i=0}^{k-1} (\lambda x - i + \mu x^{-1}t) \bmod (t^2-1)k!1​i=0∏k−1​(λx−i+μx−1t)mod(t2−1) 的系数表示,其中 [t0][t^0][t0] 对应 ξ\xiξ 数列,[t1][t^1][t1] 对应 ζ\zetaζ 数列,可以 O(klog⁡2k)O(k\log^2 k)O(klog2k)。

由此,可以在 O(klog⁡2k+klog⁡r)O(k\log^2 k + k\log r)O(klog2k+klogr) 时间内计算出。

BJOI2019 勘破神机 新解相关推荐

  1. [BJOI2019]勘破神机

    [BJOI2019]勘破神机 推式子好题 m=2,斐波那契数列,$f_{n+1}$项 不妨$++l,++r$,直接求$f_n$ 求$\sum C(f_n,k)$,下降幂转化成阶乘幂,这样都是多项式了, ...

  2. [BJOI2019]勘破神机(斯特林数,数论)

    [BJOI2019]勘破神机(斯特林数,数论) 题面 洛谷 题解 先考虑\(m=2\)的情况. 显然方案数就是\(f_i=f_{i-1}+f_{i-2}\),即斐波那契数,虽然这里求出来是斐波那契的第 ...

  3. luogu P5320 [BJOI2019]勘破神机

    传送门 首先我们要知道要求什么.显然每次放方块要放一大段不能从中间分开的部分.设\(m=2\)方案为\(f\),\(m=3\)方案为\(g\),\(m=2\)可以放一个竖的,或者两个横的,所以\(f_ ...

  4. #loj3090 [BJOI2019] 勘破神机

    简单线性代数练习题 首先翻开具体数学生成函数一章,可以发现\(F(n),G(n)\)满足以下递推式 \[F(n)=F(n-1)+F(n-2),F(0)=1,F(1)=1\] \[G(n)=4G(n-2 ...

  5. [BJOI2019]勘破神机(第一类斯特林数,斐波那契数列)

    真的是好题,只不过强行多合一有点过分了-- 题目大意: $T$ 组数据.每个测试点中 $m$ 相同. 对于每组数据,给定 $l,r,k$,请求出 $\dfrac{1}{r-l+1}\sum\limit ...

  6. [BJOI2019]勘破神机(斯特林数+二项式定理+数学)

    题意:f[i],g[i]分别表示用1*2的骨牌铺2*n和3*n网格的方案数,求ΣC(f(i),k)和ΣC(g(i),k),对998244353取模,其中l<=i<=r,1<=l< ...

  7. 【LOJ】#3090. 「BJOI2019」勘破神机

    LOJ#3090. 「BJOI2019」勘破神机 为了这题我去学习了一下BM算法.. 很容易发现这2的地方是\(F_{1} = 1,F_{2} = 2\)的斐波那契数列 3的地方是\(G_{1} = ...

  8. 【luogu P5320】勘破神机(数学)(数列特征方程)(第一类斯特林数)

    勘破神机 题目链接:luogu P5320 题目大意 给你 l,r,kl,r,kl,r,k(其中 l,rl,rl,r 很大,k≤501k\leq 501k≤501),求: 1r−l+1∑i=lrCfi ...

  9. 【BJOI2019】勘破神机【数论】

    传送门(难得正经一回) 神题,思想值得学习. 首先明确题意: 两个子问题,一个2xN,一个3xN. 接下来对这个问题进行慢慢的推敲 解方案数 很明显,我们要先解决放置方案数的公式,才能做这个题. 对于 ...

最新文章

  1. 【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★
  2. c语言学习笔记-if语句块一定要加分号
  3. 事件标志组的等待与通知
  4. SAP信用控制配置事物码
  5. boost::stl_interfaces模块实现重复字符迭代器的测试程序
  6. 文件夹的位置_感觉电脑变卡了?删除这5个文件夹 C盘立马清爽
  7. netbeans6.8_NetBeans IDE 8.0和Java 8的新功能
  8. 解决Ubuntu14.04在外接显示器不能指定问题的最佳分辨率
  9. -wl是不是c语言的标识符,C语言基础知识考试
  10. 据库中事务、会话、线程这几个概念是什么关系
  11. nohup 与 linux 程序后台执行
  12. JDK 7-JDK 21:Oracle Java SE 支持路线图/Oracle Java SE Support Roadmap 持续更新
  13. 王者为什么有些服务器在维护,王者荣耀服务器正在维护中怎么回事 进不去怎么办...
  14. Java编程:中缀表达式转后缀表达式
  15. 软考高项历年作文真题
  16. sublime快捷键(mac版)一览
  17. 判断一个很大的数是否是11的倍数(2种做法)
  18. 如何制作价目表制作报价单
  19. i5 12490f和i5 12400f的区别
  20. OIer专用-网址导航

热门文章

  1. 联想拯救者y7000p加内存条_联想 拯救者Y7000P 如何插入SD卡?
  2. 联想拯救者Y7000重装win10系统卡在logo界面
  3. 分享 | 一份小小的信念
  4. fiddler移动端抓取
  5. 实现病案首页数据上报自动化-小帮全面解决-数据上报自动化
  6. ★★★Win10切换本地账户(最全版本)
  7. win10系统没有切换用户功能怎么办
  8. Raspberry Pi 4和 Raspberry Pi 4B的区别_8GB内存的树莓派4来啦!国内售价589元,官方还推出配套64位系统...
  9. 修复鼠标单击变双击的问题
  10. [转]Java咖啡馆---叹咖啡