算法中的数学知识(三)—容斥原理与简单博弈论(SG定理)

本文深入探讨了如何利用容斥原理解决LeetCode中的能被整除的数问题,以及介绍了简单博弈论中的Nim游戏及其扩展,包括有向无环图游戏的SG函数。通过实例分析和代码展示,阐述了如何运用这些算法策略来解决实际问题。

- 本人的LeetCode账号:魔术师的徒弟,欢迎关注获取每日一题题解,快来一起刷题呀~

一、容斥原理

1 容斥原理介绍

  高中中,我们学过一个经典的容斥原理的图:

  这便是最简单的容斥原理。

  这个公式可以推广到一般的n个圆的交集。
S = S ( 1 ) + S ( 2 ) + . . . + S ( n ) − ∑ i , j , i ! = j s ( i ) s ( j ) + ∑ i , j , k s ( i ) s ( j ) s ( k ) . . . + ( − 1 ) n − 1 s ( 1 ) s ( 2 ) ∗ . . . ∗ s ( n ) S = S(1)+S(2) +...+S(n)\\ -\sum_{i,j, i!=j}s(i)s(j)\\ +\sum_{i,j,k}s(i)s(j)s(k)\\ ... +(-1)^{n - 1}s(1)s(2)*...*s(n) S=S(1)+S(2)+...+S(n)i,j,i!=js(i)s(j)+i,j,ks(i)s(j)s(k)...+(1)n1s(1)s(2)...s(n)
  它总共有:
C n 1 + C n 2 + . . . + C n n + C n 0 − C n 0 = 2 n − 1 等 价 于 从 n 个 数 中 选 任 意 多 个 数 的 组 合 个 数 每 个 数 选 与 不 选 C_n^1+C_n^2+...+C_n^n+C_n^0-C_n^0 = 2^n - 1\\ 等价于从n个数中选任意多个数的组合个数 每个数选与不选 Cn1+Cn2+...+Cnn+

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值