计数初步

Outline

  • 计数原理
  • 组合数/二项式系数
  • 错位排列
  • 卡特兰数/卡塔兰数
  • 斯特林数/斯特灵数
  • 三元环计数

加法原理

计数初步_第1张图片

乘法原理

计数初步_第2张图片

定义

计数初步_第3张图片

计算

计数初步_第4张图片

小♂试牛刀

  • ∑ i = 1 n X i = m , ( X i > 0 ) \sum_{i=1}^nX_i=m,(X_i>0) i=1nXi=m,(Xi>0)的方案数。

    (把m个相同小球放在n个不同盒子,盒子不能为空的方案数)

  • ∑ i = 1 n X i = m , ( X i > = 0 ) \sum_{i=1}^nX_i=m,(X_i>=0) i=1nXi=m,(Xi>=0)的方案数。

    (把m个相同小球放在n个不同盒子,盒子可以为空的方案数)

  • ∑ i = 1 n X i = m , ( X i > = k ) \sum_{i=1}^nX_i=m,(X_i>=k) i=1nXi=m,(Xi>=k)的方案数。

    (通过给所有盒子钦定都先有k个小球,然后转化为问题2)

  • 有m种颜色,第i种颜色恰好用 X i X_i Xi ( ∑ i = 1 m X i = n ) (\sum_{i=1}^mX_i=n) (i=1mXi=n),用这些颜色给一个长度为n的序列上色的方案数。

    • a n s = C n x 1 C n − x 1 x 2 C n − x 1 − x 2 x 3 … C n − x 1 − x 2 . . . − x m − 1 x m ans=C_n^{x_1}C_{n-x_1}^{x_2}C_{n-x_1-x_2}^{x_3}…C_{n-x_1-x_2...-x_{m-1}}^{x_m} ans=Cnx1Cnx1x2Cnx1x2x3Cnx1x2...xm1xm
    • a n s = n ! Π i = 1 m x i ! ans=\frac{n!}{\Pi_{i=1}^{m}x_i!} ans=Πi=1mxi!n!
  • n × m n × m n×m的棋盘,每次都只能向上或者向右, ( 1 , 1 ) (1,1) (1,1)-> ( n , m ) (n,m) (n,m)的方案数。

    (总共走了n+m-2步,把向上走的n-1步任意穿插在里面, a n s = C n + m − 2 n − 1 ans=C_{n+m-2}^{n-1} ans=Cn+m2n1

  • n × m n × m n×m的棋盘,有两个棋子分别位于(1,2),(2,1),这两个棋子同时移动,每次只能向上或者向右,(1,2)->(n-1,m),(2,1)->(n,m-1),同时两个棋子的路径交集为空的方案数。

    (考虑容斥,先求出两个点到终点任意走的方案数为ans1和ans2,减去不合法的方案数。画一下图,发现两条路径交叉,可以看做从(1,2)->(n,m-1),(2,1)->(n-1,m)。求出分别方案数ans3,和ans4。 a n s = a n s 1 ∗ a n s 2 − a n s 3 ∗ a n s 4 ans=ans1*ans2-ans3*ans4 ans=ans1ans2ans3ans4

圆排列

计数初步_第5张图片

例1 组合数前缀和

计数初步_第6张图片

Solution

Lucas定理

计数初步_第7张图片

例题2 [SHOI2015]超能粒子炮

计数初步_第8张图片

  • 点我跳转
例题3 [SDOI2010古代猪文]

计数初步_第9张图片

  • 点我跳转

错位排列

计数初步_第10张图片

例题4 [BZOJ4563]
  • 模板题直接求 D ( n ) D(n) D(n)就是答案,不过给你了个恶心的高精度。不写了。
例题5 [SDOI2016]
  • 这题比较良心,有取模。注意的是需要乘上一个组合数,所以先 O ( n ) O(n) O(n)处理阶乘和阶乘的逆元。

卡特兰数

计数初步_第11张图片
计数初步_第12张图片

例题5 [BZOJ2822]树屋阶梯
  • 毒瘤高精度请注意!

第一类斯特林数

计数初步_第13张图片

例题6 [Loj2173]建筑师
  • 不错的题,算是第一类斯特林数模板题,不过有取模qwq。

第二类斯特林数

计数初步_第14张图片

三元环计数

计数初步_第15张图片

  • 统计每个点的度数
  • 入度<= m \sqrt{m} m 的分为第一类,入度> m \sqrt{m} m 的分为第二类
  • 对于第一类,暴力每个点,然后暴力这个点的任意两条边,再判断这两条边的另一个端点是否连接
    因为m条边最多每条边遍历一次,然后暴力的点的入度<= m \sqrt{m} m ,所以复杂度约为 O ( m m ) O(m\sqrt{m}) O(mm )
  • 对于第二类,直接暴力任意三个点,判断这三个点是否构成环,因为这一类点的个数不会超过 m \sqrt{m} m 个,所以复杂度约为 O ( m 3 ) = O ( m m ) O(\sqrt{m}^3)=O(m\sqrt{m}) O(m 3)=O(mm )
  • 判断两个点是否连接用map就可以,根据具体情况而行
  • 对于第一类我们需要为了去一下重,可以每做完一个点,给他打上一个标记。下次对其他点计数时,如果含有被打过标记的点,不参与计数。

完结撒花!

你可能感兴趣的:(计数)