朴素多项式乘法考题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhouyuheng2003/article/details/84646463

前言

这一篇博客是在之前学习FFT的博客之后的,所以,如果你还不会FFT,请先看多项式乘法(FFT),在这篇博客里我有良心的详细讲解

正文

题型一:模板题&类模板题
  • 模板系列可以供你检测你写的FFT是否正确,在很多OJ上都有
  • 高精度系列,正式赛场上这样的毒瘤题不是很多,现在的考题一般都会给一个模数让你求,但是对于一些特殊的题可能还是会用到,所以可以练一练手(FFT可以优化高精度乘法,高精度乘法优化后可以优化部分其它操作)
题型二:纯卷积题

考虑一次多项式乘法 C = A B C=A*B ,其本质是做一次普通的卷积
C n = i = 1 n A i B n i C_n=\sum_{i=1}^nA_iB_{n-i}
然后根据这个东西就能解决很多的问题

  • 卷积推式子系列
    BZOJ3527,这一道题是一道典型的卷积题目,把推一下式子就直接搞定了
  • 翻转数组系列
    BZOJ2194这是一道裸题,可以练练手,很多题都会用到这类技巧
题型三:生成函数题

什么是生成函数?
g ( x ) = i = 0 f ( i ) x i g(x)=\sum_{i=0}^{\infty}f(i)*x^i
就是这样一个东西,看起来好像很难的样子,实际上也确实很难,对于一些各种各样的 f ( i ) f(i) 推式子都很麻烦,但当然也有简单的题目(另外有非FFT的生成函数题,可以自行学习,如BZOJ3028

  • 在一些数中求选的数和的可能性系列
    BZOJ3771这一道题可以用容斥推一下式子,然后通过FFT来计算答案,方法就把指数当成价值
题型四:匹配相关
  • 特殊匹配系列
    BZOJ4503能匹配上代表0,把通配符视为0,求 ( A i B j ) 2 A i B j (A_i-B_j)^2*A_i*B_j 即可
    常见模型:石头剪刀布(分别标值FFT)
题型五:结合其它数据结构或者思想

BZOJ4332推公式+倍增

总结

FFT本身作为考点能考的东西并不是特别多,主要是考验推式子的能力。由于我现在太菜,阅题不多,所以也不是很全,这篇博客将会持续更新

猜你喜欢

转载自blog.csdn.net/zhouyuheng2003/article/details/84646463