标签:函数 DFT sum 生成 枚举 Cx 维度 prod
高维生成函数
例子:
二维生成函数的形式幂级数:\(F = \sum_{i = 0}^n\sum_{j = 0}^ma_{i,j}x^iy^j\)
考虑对其卷积:
\[A * B = C = \sum_{i = 0}^{A_n}\sum_{i = 0}^{A_m}a_{i , j}x^iy^j\sum_{i = 0}^{B_n}\sum_{i = 0}^{B_m}b_{i , j}x^iy^j\\ \sum_{Cx_i = 0}^{A_n + B_n}\sum_{Cy_i = 0}^{A_m + B_m}x^{Cx_i}y^{Cx_i}\sum_{Ax_i + Bx_i = Cx_i}\sum_{Ay_j + By_j = Cx_j} (\frac{Cx_i}{Ax_i})(\frac{Cy_i}{Ay_i})a_{Ax_i,Ay_i}b_{Bx_i,By_i} \] 上面的式子没什么用
经过一些推到有以下结论:
对各个维度单独做一个DFT,然后再相应点乘起来,最后再对每一个维度IDFT回去,便可以得到原卷积
对于二维:
可以先枚举第一维,然后对每一个第二维DFT
在上一维度的结构:再枚举第二维,然后对每一个第一维DFT一下
最后将点相应点乘起来
最后再枚举第二维,然后对于每一个第一维IDFT
再枚举第一维,然后对每一个第二维IDFT一下
最后就是卷积答案
复杂度大概是\(O(n^mlogn)\)
更多的例子:FWT,FMT (本质上就是一个高维插值)
例题:[十二省联考 2019] 皮配
记号:
\[S = \sum_{i}s_i\\ \]建出这样一张图:
不妨将第一行人数设为一个维度\(x\),第一列人数设为第二个维度\(y\)
然后就有了一下这个矩形:
那么原题目的若干限制就可以表示为若干个\(x,y\)相关的区间
然后就是要求出相关的二元生成函数了
考虑对于每一个城市的学校\(\{s_1,s_2,...,s_l\}\)
每个学校要么选择第一行,要么选择第二行
\[容易列出如下式子:\\ \prod(x^{s_i}y^{s_i} + x^s) +\prod(y^{s_i} + 1)\\ 即: (\prod(x^{s_i} + 1) + 1)(\prod(y^{s_i} + 1)) \]此时\(x,y\)分别独立
对于有限制的学校也一样这么做即可
生成函数杂题:
首先有个显然的结论:
\[2至多出现两次\\ 其余出现的只有3\\ 感性证明:\\ 4可以由两个2表示\\ 5可以由3 + 2表示,且3 * 2 > 5\\ . . . \]分别枚举一下2的个数
标签:函数,DFT,sum,生成,枚举,Cx,维度,prod 来源: https://www.cnblogs.com/Yeyuqing0913/p/16023768.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。