zoukankan      html  css  js  c++  java
  • 算法记录 003:高斯消元算多项式乘法

    实用算法 003:高斯消元算多项式乘法

    众所周知ntt/fft是目前已知的时间复杂度最优的多项式乘法算法。

    那为什么我们还需要知道这个方法呢?

    考虑这个问题:

    (n)个多项式(p_1,p_2,p_3...p_n)。和一个目标多项式(q),初始(q=1)

    (q)次操作:(mul i)

    表示令(q=q imes p_i)

    最后输出(q)的前(a)次项系数。(保证乘法过程中大于a次项系数都为0)

    直接fft/ntt时间复杂度为(O(aqlog a))。但是fft/ntt的常数巨大,经常会TLE。

    下面介绍一种小常数(O(a^3+a imes q))的做法。

    设最终的多项式(q=sum a_{i} imes x^i)

    我们若令(x=1,2,3,4...a),然后将(x^i)看作常数,(a_i)看作未知数,列出(a)个方程,然后高斯消元即可。可以发现最终的矩阵一定是非奇异的,所以方程一定存在唯一解。

    适用范围:

    乘法次数多,系数非0的项的个数比较少。

    题目: cf917d

  • 相关阅读:
    Hdu 1257 最少拦截系统
    Hdu 1404 Digital Deletions
    Hdu 1079 Calendar Game
    Hdu 1158 Employment Planning(DP)
    Hdu 1116 Play on Words
    Hdu 1258 Sum It Up
    Hdu 1175 连连看(DFS)
    Hdu 3635 Dragon Balls (并查集)
    Hdu 1829 A Bug's Life
    Hdu 1181 变形课
  • 原文地址:https://www.cnblogs.com/gary-2005/p/14242812.html
Copyright © 2011-2022 走看看