膜拜tshoigyr系列----思维题集锦+斯特林数小结+置换群

n 个 集合, 并集是 [1 -- m] 求方案数

例:  n = 2, m = 2

有 ((1,2), (1, 2)) ((1, 2), 1) (1, (1, 2)) ((1, 2), 2) (2, (1, 2)) (0, (1, 2)) ((1, 2), 0) (1, 2) (2, 1) 9 种

解 : n = 3 时, 把 1 -- m 每一个数放进 1 -- 7 个格子中, 可以不放

发现每一种放法对应一种方案

于是  ans = (2^n-1 )^ m


n 维平面的正交图形包涵多少 m 维的图形

例: n = 3, m = 2 , 正方体有6个面于是答案为6

解: 建立n为的平面直角坐标系, 如 n = 3时有

(0, 0, 0) (0, 0, 1) (0, 1, 0) (0, 1, 1)... 等8个点

于是明显有 m = 0 时 ans = 2 ^ n

我们发现 2 ^ m 个点确定一个m为图形, 我们可以在坐标中 (n维) 选m维出来将其固定

然后其余的 n - m 维可以随意取 

于是 ans=2^{n-m}*C_n^m


 

我们发现一个1*2的块总共有6种, 每种一定是不同的两种颜色, 也就是说有一种没有选的颜色

那么由(G, B)组成的块有 m - r (不妨设为a) 个, (R, B)的有 m - g (b)个, (G, R) 的有m - b (c)个

方向可以暂时不考虑, 最后 * 2  就可以了

那么原问题等价于将这3块放进去, 并且相同的两块不能相邻的个数

先考虑只放两块的种类, 也就是ABAB..., 而第3块C的作用就是将它隔开

而ABAB... 的放发有4种, AB...A, BA...B, AB...A, BA...A

一二种会使A, B块个数差1, 就是用来调节 a 和 b 的差的. 第3, 4种其实是等价的

然后可以枚举第一种的个数 i, 通过a, b 的差值算出 第二种的个数 j , 第3种的个数 k

我们不妨设 n 为可以放的块的个数, 如果两个C在两头, n 就是 C-1, 一个就是C, 两个都不在就是C+1

首先在 n 个里面填 i 个, 然后 n - i 个里面填 j 个,  然后把 k 个剩余块插进空位, 因为C不能相邻

所以剩余的n-i-j块每个空位至少一个, 用隔板法求一下, 然后这k个每个都可以是ABAB, 或者是BABA, 所以 * 2 ^ k


 

先考虑 m = 0 的情况

DP + 全集减补集可以求出, 有一个枚举一号连通块大小的讨论

dp[n][k] = \binom{\binom{n}{2}}{k}-\sum_{i=1}^n\sum_{j=i-1}^{\binom{i}{2}}dp[i][j]*\binom{n}{i-1}* \binom{\binom{n-i}{2}}{k-j}

m = 2 就 考虑去掉1 , 2 的连通块情况, 有些复杂 ... 


斯特林数小结

第一类, n个球, k个圈, 枚举是新开一个圈还是插进原来的圈

S_1(n, k) =S_1(n-1, k-1)+(n-1)S_1(n-1, k) 

第二类, n个球, k个抽屉, 枚举新开一个抽屉还是放进原来的抽屉

S_2(n, k) =S_2(n-1, k-1)+kS_2(n-1, k)


x^n=\sum_{i=0}^nS_2(n, i)x^{i'}

这里的 i' 是下降幂

x^n=x*x^{n-1}=\sum_{i=0}^{n-1}S_2(n-1, i)x^{i'}*x=\sum_{i=0}^{n-1}S_2(n-1, i)x^{i'}*(x-i)=\sum_{i=0}^{n-1}S_2(n-1, i)x^{i'}*i=\sum_{i=0}^{n-1}S_2(n-1, i)x^{(i+1)'}+\sum_{i=0}^{n-1}S_2(n-1, i)x^{i'}*i

 x ^ k 的系数为 S_2(n-1, k-1)+S_2(n-1, k)*k=S_2(n,k)


x^n=\sum_{i=0}^n(-1)^{n-i}S_2(n, i)x^{i''}

这里的 i'' 是上升幂

x^{i'}=(-x)^{i''}*(-1)^i

代到上面   

(-x)^n=\sum_{i=0}^nS_2(n, i)(-x)^{i'}=\sum_{i=0}^nS_2(n, i)(-1)^ix^{i''}

于是

x^n=\sum_{i=0}^nS_2(n, i)(-1)^{n-i}x^{i''}


x^{n''}=\sum_{i=0}^nS_1(n, i)x^i

x^{n''} = (x+n-1) * x^{(n-1)''}=\sum_{i=0}^nS_1(n-1, i)x^i*(x+n-1)

第 k 项的系数

S_1(n-1, k-1) + (n-1) * S_1(n-1, k)=S_1(n, k)


x^{n'}=\sum_{i=0}^n(-1)^{n-i}S_1(n, i)x^i 

类似前面推一下


斯特林反演

f(n)=\sum_{i=0}^nS_1(n, i)g(i)\Leftrightarrow g(n)=\sum_{i=0}^n(-1)^{n-i}S_2(n, i)f(i)

首先有

x^n=\sum_{i=0}^n(-1)^{n-i}S_2(n, i)x^{i''}=\sum_{i=0}^n(-1)^{n-i}S_2(n, i)\sum_{j=0}^{i}S_1(i, j)x^j

只有j == n时前面为1, 于是

\sum_{i=0}^n(-1)^{n-i}S_2(n, i)\sum_{j=0}^{i}S_1(i, j)=[j==n]

来看要证的式子

g(n)=\sum_{i=0}^n(-1)^{n-i}S_2(n, i)\sum_{j=0}^iS_1(i, j)g(j)=g(n)


给出一个 n×m 大小的矩形,每个位置可以填上[1,c]中的任意一个数,要求填好后任意两行互不等价且任意两列互不等价,两行

或两列等价当且仅当对应位置完全相同,求方案数 。n,m≤5000

解: 先考虑行不同, 很明显答案为 g(m)=(c^m)^{n'}, n' 是下降幂

现在来考虑列, 我们可以枚举有i个不同的列, 那么方案就是 S2(m, i), 即m个球分成i类

我们令f(i)为考虑i列, 且i列均不同方案数, 有

g(m)=\sum_{i=0}^mf(i)S_2(m, i)

所以    f(m)=\sum_{i=0}^m(-1)^{m-i}g(i)S_1(m, i) 


置换群

Burnside 定理 :

证明: 


例1:

考虑一下转 k 格有哪些必须相同, 直接上定理

ans=\frac{\sum_{i=1}^mn^{gcd(m, i)}}{m}


例2:

难点就是求合法的不动点个数

假设转了 k 个格子, 那么每 n * m / gcd(n*m, k)个格子颜色相同

于是必须有 n = n * m / gcd(n*m, k), 所以gcd(n, k/m) = 1 

如果考虑旋转, 每种情况颜色可以重新排列一下, 所以是 m!, 总共 phi(n) 次

如果不考虑旋转, 就是总共 (n*m)个格子排列(n*m)!,  除以 颜色内的排列 n!

ans=\frac{(n=1?0:\varphi(n))*m!+\frac{(n*m)!}{(n!)^m}}{n*m}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值