推式子小技巧
推式子小技巧
标签(空格分隔): 数学
先讲一些万金油
- 交换求和顺序,这个很\(naive\)。
- 式子可以随意提到与其无关的枚举项前后,这个也很\(naive\)。
- 算贡献思想,这个非常重要,一般需要一点个人能力,只要转化前后每一项被算的次数一样就可以
- 熟记常见结论,对模数敏感一点,该卷积的就卷起来用多项式,该反演的反演,该容斥的容斥。
- 还要一些灵感啊\(QAQ\)
卷积
这个我玩的不怎么熟,只会常见形式。
\[\sum\limits_{i=1}^{n}f(i)g(n-i)
\]
没错你碰见什么式子尽量拆成只与\(i\)和只与\(n-i\)有关系的函数就可以了,基本上就是卷积。
\[\sum\limits_{i=1}^{n}f(i)g(i+d)
\]
这个嘛,你把\(g\)数组\(reverse\)一下,使得\(g^{'}(n-i-d)=g(i)\),然后又可以卷了。
组合数学
这个我也不熟,随便鬼扯一点。
- 看到模数是质数又和组合数有关,先想能不能用\(lucas\)优化推理过程,如这道题。
- 基本上所有的扩展数论算法都基于把模数分成\(\prod p_i^{a_i}\)然后对每个\(p_i^{a_i}\)分别处理。
- 遇到一些特殊的计数\(dp\)找性质,利用数量相等的关系推转移方程,如卡农、地精部落、地形生成。
- 该二项式反演的就二项式反演,两种形式记清楚
- \(f(k) = \sum\limits_{i = k}^{n} (-1)^{i}\binom{i}{k}g(i) \Leftrightarrow g(k) = \sum\limits_{i = k}^{n} (-1)^{i} \binom{i}{k}f(i)\)
- \(f(k) = \sum\limits_{i = k}^{n} \binom{i}{k}g(i) \Leftrightarrow g(k) = \sum\limits_{i = k}^{n} (-1)^{i - k} \binom{i}{k}f(i)\)
- 然后主要就是容斥,容斥的本质就是减掉多算的,让每个数变成它该算到的次数。
- 叉姐的标准容斥形式,设\(B_i\)表示第\(i\)件坏事发生的概率,那么\(n\)个坏事都不发生的概率,可以通过\(2^n\)个同时发生的概率计算,\(\{S|B_i\in S\}\)的容斥系数是\((-1)^{|S|}\)。
筛法
这个我还是不熟,又要随便扯一点。
- 线性筛还不会的可以退役了。
- 埃式筛有时候有奇效,\(min\_25\)差不多就是个埃式筛的过程
- 看数据范围行事,\(\le 10^6\)基本上是埃式筛,\(\le2*10^7\)之类就要线性筛了,$\le 10^{10} $~\(10^{11}\)杜教和\(min\_25\)准没错,再大了,就要看灵感了。
- 积性函数是非常非常非常重要的!
- 判断一个函数是不是积性的,先看是不是基本函数,再根据函数定义判断是不是积性函数,实在不行,两个积性函数的狄利克雷卷积函数是积性的,还不能判断那我也没办法了。
- 看到一个函数\(f(p)\),看它是不是积性的,如果是,那基本上能线筛,只要能快速求\(f(p)\)和\(f(p^k)\)就能线筛,如果不是积性函数,那也可能有一些和线筛过程有关的性质,于是有可以线筛。如此题就是线筛非积性函数的栗子。
- \(min\_25\)筛的原理一定要理解,用它可以干一些与最小质因子(第一步魔改),最大次大质因子(第二步魔改),特定质因子(都要魔改)等毒瘤问题。
- 杜教筛是可以有神仙操作的,没事可以试试拿常见的一些函数去卷,毕竟任何积性函数卷任何积性函数结果还是积性函数。如循环之美。
常见结论
\[\sum_{d|n}\mu(d)=[n=1]\\
\sum_{d|n}\varphi(d)=n\\
(\varphi*e)=(\mu*I)\\
\sum_{d=1}^n\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]\\
=\sum_{d=1}^n\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}[gcd(i,j)==1]\\
=\sum_{d=1}^n\sum_{i=1}^{\lfloor\frac nd\rfloor}\mu(i)\lfloor\frac n{id}\rfloor\lfloor\frac m{id}\rfloor\]
咕咕咕