首先,本蒟蒻先坦明,本篇文章不为提高组及 以上的选手服务(因为我太弱了)。
一些重要的公式/算法
①入门:
(1)基本运算律
即,像 , , 这样的文化课学的恒等式,这是编程中做数学题的基础。大家无论是普及组选手还是提高组选手,务必要记牢在学校学的所有数学芝士,千万不能因此出现关键时刻粗心出错导致十年OI一场空的情况。
(2)快速幂
如果不会,请进这道题: Luogu1226
②基础:
(1)杨辉三角形
(2)组合数的定义与组合数的公式
※组合,即排列组合,为不考虑顺序的组合。本蒟蒻编个情景来解释 的意义:存在 个不同的不同的小球,选其中 个小球放到篮子里的方案数。
※一些公式
这里仅列下几个,毕竟本蒟蒻一时间想不全。
①
②
③
④卢卡斯定理 (偷懒一下不写了)
注意关键在于组合数的运用,而不是背公式。
(3)组合数取模(阶乘逆元)
由于有的时候 的值可能过大,所以题面往往会让你将答案对某个数取模;但是涉及到除法不能取模,那么我们就需要逆元。其简要推导过程如下:
通常一道要用到组合数的题目中,需要多次使用组合数;那么我们为了O(1)时间内求
,就需要预处理出
的值。这里要用到显而易见 的阶乘逆元。
即
我们可以先求出1至 的阶乘,然后算出 的逆元,即 的值,然后按照 一步步递推即可。
当然我们也可以用卢卡斯定理来求一些组合数。这里不再论述 (它不常用) 。
一些"模板"
(1)把 个不同的球放到 个不同的盘子里,每个盘子非空,求方案数。由于答案可能过大,请将其对998244353取模。
不要跟我说你要用dp做
本题是最经典的插板法。
即,我们要在 个苹果之间插板,把 个苹果分成 个区域。由于插 个板即可得到 的区域, 个苹果之间有 个间隙,所以本题的答案就是 。
举个栗子: 当 时求方案数。
○ ○ ○ ○ ○
我们要在
个空隙中插
个板。比如一种插板方式如下:
○ ○|○ ○|○
这样我们就把2个苹果分到了第一个盘子,2个苹果分到了第二个盘子,1个苹果分到了第三个盘子。
所以得到方案数为 。
(2)把 个不同的球放到 个不同的盘子里,每个盘子可以为空,求方案数。由于答案可能过大,请将其对998244353取模。
本题是经典的插板法。
即,我们要在 个苹果之间插板,把 个苹果分成 个区域,第 个区域的苹果树 表示第 个盘子里放 个苹果。由于插 个板即可得到 的区域, 个苹果之间有 个间隙,所以本题的答案就是 。
举个栗子: 当 时求方案数。
○ ○ ○ ○ ○ ○ ○ ○
我们要在
个空隙中插
个板。比如一种插板方式如下:
○ ○ ○|○ ○|○ ○ ○
这样我们就把3-1=2个苹果分到了第一个盘子,2-1=1个苹果分到了第二个盘子,3-1=2个苹果分到了第三个盘子。
所以得到方案数为 。