【学术篇】The Xuanku Inversion Magic学习笔记
退役之前写的 然后因为退役就咕咕咕了...
后来发现数学考试能用的到个鬼就发布出来了QwQ
主要是方便自己没登录的时候查阅...
显然子集什么的是没有学会的QwQ
所以学OI的话不要看本文!!!!!>
以下是懒得修改和编辑的原文:
基本引用自vfleaking大大的幻灯片...
我知道我写的没人看你萌只想要个链接而已~
本文注释~ 为了不影响阅读就添加一个跳转咯~
什么是反演:
假设有两个函数\(f\)和\(g\)满足
\[
f(n)=\sum_ka_{n,k}g(k)
\]
已知\(g\)求\(f\)当然很水啦,而已知\(f\)求\(g\)的过程就称为反演。
在一般情况下,直接裸上求反演只能高斯消元解方程爽爽……
利用一些特别的反演,可以给解题提供思路。
即,可以用未知量表示已知量,然后解出来。
反演(Inversion)的过程就像变一场炫酷(Xuanku(?))的魔术(Magic)一样, 所以我们就有了TXIM(The Xuanku Inversion Magic)这种东西 显然是在一本正经的胡说八道←_←
我们考虑一个简单问题:
说从前有\(n\)个人,编号为\(1,…,n\)。
这\(n\)个人站成一排,编号为\(i\)的人不能站在第\(i\)个。
求方案数。
\(n \leqslant 10^5\)
啊 我会容斥! 小学生的容斥就不说了qwq, 我们说一下中学生的容斥.
我们假如\(n\)个人都在随便站, 那么情况显然一共有\(n!\)种;
如果有至少1个人站对, 我们有\(n\)种方法选出这个站对的人, 剩下人有\((n-1)!\)种站法, 一共有\(n*(n-1)!\)种.
如果有至少2个人站对, 我们有\(\binom n2\)种选法选出站对的人, 剩下人有\((n-2)!\)种站法, 一共有\(\binom n2*(n-2)!\)种.
...
如果有至少k个人站对, 我们有\(\binom nk\)种方法选出站对的人, 剩下人有\((n-k)!\)种站法, 一共有\(\binom nk*(n-k)!\)种.
根据容斥, 令\(F(k)\)表示要求至少有\(k\)个人站对的情况总数, 即\(F(k)=\binom nk*(n-k)!\), 我们有
\[
ans=F(0)-F(1)+F(2)-F(3)+...+(-1)^n*F(n)=\sum_{k=0}^n(-1)^kF(k)=\sum_{k=0}^n(-1)^k\binom ni(n-k)!
\]
这样就搞定了~ 那么这个容斥系数\(\pm1\)是怎么来的呢?
我们发现, 至少\(m\)个人站对的话, 一定有\(0,1,2,3...m-1\)个人站对了, 那我们在之前的过程中重复统计了多少次呢?
我们有\(\binom mk\)次统计至少\(k\)个人站对的情况, 所以一共多统计了
\[
\sum_{k=0}^{m-1}(-1)^k\binom mk
\]
这么多次, 我们只需要减回去就行了~ 那这玩意怎么推啊?
我们可以知道有这么个东西: (牛顿)二项式定理:
\[
(x+y)^k=\sum_{i=0}^n\binom nix^iy^{n-i}
\]
所以
\[\sum_{k=0}^{m-1}(-1)^k\binom mk=\sum_{k=0}^m(-1)^k\binom mk-(-1)^m\binom mm=(1+(-1))^m-(-1)^m=(-1)^m\]
即对于每个\(m\), \(F(m)\)被多统计了\(-(-1)^m\)次, 减掉就行了~
是不是很简单? 主要就是利用了
\[
\sum_{k=0}^n(-1)^k\binom nk=0
\]
这个性质, 不过嘛, 有个小例外, 就是当\(n=0\)时, 值应该为1. 所以我们要改一改:
\[
\sum_{k=0}^n(-1)^k\binom nk=[n=0]
\]
这个问题我们就这么解决了. 先别急着撒花, 我们从另一个角度思考一下这个问题.
令\(f(x)\)表示\(x\)个人随便站的方案数, \(g(x)\)表示\(x\)个人都站错的方案数. 显然
\[
f(n)=\sum_{k=0}^ng(k)
\]
我们如果知道了\(g\)的表达式, 就可以推出\(f\)了.
可是, 我们现在知道的明明是\(f\), 我们要求的红红才是\(g\).
那能不能想办法用\(f\)来表示\(g\)呢? 我们不妨大胆的猜测是可以的.
有一句看上去是废话的话:
\[
g(n)=\sum_{m=0}^n[n-m=0]\binom nmg(m)
\]
然后我们发现有个\([n-m=0]\), 那就把刚才非常炫酷的性质
\[
\sum_{k=0}^n(-1)^k\binom nk=[n=0]
\]
代进去好了~
\[
=\sum_{m=0}^n\sum_{k=0}^{n-m}(-1)^k\binom {n-m}k\binom nmg(m)
\]
然后\(\binom {n-m}k\binom nm\)表示了从\(n\)中选两个长度分别为\(m\)和\(k\)的子集, 所以和\(\binom nk\binom {n-k}m\)等价, 那我们调整(jiao)一下柿纸里可爱的求和符号~
\[
=\sum_{k=0}(-1)^k\binom nk\sum_{m=0}^{n-k}\binom{n-k}mg(m)
\]
好的我们看到最后的小朋友\(\sum_{m=0}^{n-k}\binom{n-k}mg(m)\)有那么一点眼熟~ 你好啊, \(f\)君~
\[
g(n)=\sum_{k=0}(-1)^k\binom nkf(n-k)
\]
而且很显然, \(f(n-k)\)在我们的假设下就是\((n-k)!\), 所以和我们上面计算的结果是一个样的~
然后我们把上面的柿子换一下下标, 让它在数学的角度看更好看一点...从我的角度并看不出它好看在哪qwq
这样我们就推出了大名鼎鼎的二项式反演!!
\[
f(n)=\sum_{k=0}^n\binom nkg(k) \\
g(n)=\sum_{k=0}^n(-1)^{n-k}\binom nkf(k)
\]
我们考虑另一个小问题:
求长度为\(n\)且仅包含小写英文字母且循环节长度恰为\(n\)的字符串的个数。
循环节……就是最短的复制若干遍后拼起来跟原串相等的字符串。
\(n\leqslant10^9\)
我们设\(f(x)\)为长度为\(x\)的字符串的总数, \(g(x)\)为长度为\(x\)而且周期为\(x\)的字符串(其实就是没有长度小于\(x\)的循环节啦~)的总数. 那么很显然
\[
f(n)=\sum_{d|n}g(d)
\]
woc这不是莫比乌斯反演么= = 水过了下一个..
我们假设忘记了莫比乌斯反演. 现在我们只知道我们需要一个反演.
我们假设有个函数\(\mu\), 有如下的性质.
\[
\sum_{d|n}\mu(d)=[n=1]
\]
你为什么那么熟练啊!
然后我们按照套路找到一句废话并将上面的结论代入
\[
g(n)=\sum_{m|n}[\frac nm=1]g(m)=\sum_{m|n}\sum_{d|\frac nm}\mu(d)g(m)
\]
套路来了, 因为\(d|\frac nm\), 所以\(md|n\), 所以\(m|\frac nd\)! 我们还是调整(jiao)一下柿纸里的求和符号~
\[
g(n)=\sum_{d|n}\mu(d)\sum_{m|\frac nd}g(m)
\]
哟, 这不是\(f\)冒出来了么~
\[
g(n)=\sum_{d|n}\mu(d)f(\frac nd)
\]
我们冥冥之中感觉这个柿纸里的\(\mu\)是传说中的莫比乌斯函数~
然后就完了. 这其实就是莫比乌斯反演.
或许还可以换一下下标
\[
f(n)=\sum_{d|n}g(d) \\
g(n)=\sum_{d|n}\mu(\frac nd)f(d)
\]
另外狄利克雷卷积角度的解释由于和本文无关但是我就是想提一下所以扔到了注里~
莫比乌斯反演
注:
- 本文的\(\binom nm\)均表示组合数, 即\(C_n^m\), 就系表达式为\(C_n^m=\frac {n!}{m!(n-m)!}\)的那个.
- \([x]\)(\(x\)为表达式)表示当\(x\)成立时为1, 否则为0.
- 另外狄利克雷卷积形式的理解就是:
\[
f(n)=\sum_{d|n}g(d) =>f=g*1 \\
f*\mu=(g*1)*\mu=g*(1*\mu)=g*\epsilon=g \\
g=f*\mu => g(n)=\sum_{d|n}f(d)\mu(\frac nd)
\]
【学术篇】The Xuanku Inversion Magic学习笔记的更多相关文章
- 第三篇 功能实现(3) (Android学习笔记)
第三篇 功能实现(3) ●发一个广播和启动一个隐式的Intent非常像,那么它们之间有什么区别呢? Implicit Intents (sent via startActivity( )) and B ...
- 第三篇 功能实现(2) (Android学习笔记)
第三篇 功能实现(2) ●Activity的四种启动模式 Activity的启动模式有四种,分别是standard.singleTop.singleTask和singleInstance. 在Andr ...
- 第三篇 功能实现(1) (Android学习笔记)
第三篇 功能实现(1) 第8章 Android应用程序组成 ●Android的一些中.底层基础知识 ※ Android Framework 启动过程 Android手机系统本质上是一个基于Linux的 ...
- 我的第一篇博客:requestAnimationFrame学习笔记
通常,我们在浏览器中写动画会用到哪些技术呢? flash 可以实现一些非常复杂的动画,但随着HTML5的成熟,个人感觉flash终究会成为明日黄花. css3 当前大部分现代浏览器已经对css3支持的 ...
- Git-第五篇廖雪峰Git教程学习笔记(4)分支
1.一开始,只有一个主分支(master),HEAD指向Master,而Master指向主分支.现在我们创建dev分支. lfy@lfy-PC MINGW64 /c/fyliu/lfyTemp/git ...
- Git-第四篇廖雪峰Git教程学习笔记(3)远程仓库,克隆远端库
1.本次连接的是gitHub仓库. 1>创建SSH Key. ssh-keygen -t rsa -C "youremail@example.com" lfy@lfy-PC ...
- Git-第三篇廖雪峰Git教程学习笔记(2)回退修改,恢复文件
1.工作区 C:\fyliu\lfyTemp\gitLocalRepository\yangjie 2.版本库 我们使用git init命令创建的.git就是我们的版本库.Git的版本库里存了很多东西 ...
- Git-第二篇廖雪峰Git教程学习笔记(1)基本命令,版本回退
1.安装Git-2.16.2-64-bit.exe后,设置用户名,用户邮箱 #--global参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地 ...
- 这篇SpringBoot整合JSON的学习笔记,建议收藏起来,写的太细了
前言 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛. 采用完全独立于编程语言的文本格式来存储和表示数据. 简洁和清晰 ...
随机推荐
- vue项目的脚手架
> cnpm i @vue/cli@3 -g > vue create myapp * 选择 Manually select features ----- 自选预设文件 * 选择 vue ...
- Java时区切换时的需要注意
前言 Java中的时间操作,也许大家都很熟悉,Date.Calendar.SimpleDateFormat等.但或许我们都只是会调用常见接口方法.今天解决的bug,关于TimeZone,即时区. 经常 ...
- 使用ubuntu的一些操作笔记20191203
前言 环境: virtualbox + Ubuntu 16.04 情况: 可以进入虚拟机中Ubuntu系统的桌面,但是外部可以访问到 ssh,输入正确的用户名和密码无法登录 无法正常启动 Apache ...
- shell脚本相关关系、浮点、循环
将一堆命令放在脚本里变成可执行脚本执行: 脚本编写,文件名为.sh,获取hostname的主机名 系统变量: Env:查看系统变量 Set :打印所有变量可以和grep和用 Export path:定 ...
- MUI 自定义从底部弹出的弹出框内容
最近做的项目都是在使用mui做手机网页,大致是下面的这种弹出效果 首先,引入 mui.css或者mui.min.css 引入 mui.min.js或者mui.js 第二步:<a href=&qu ...
- AI加持的阿里云飞天大数据平台技术揭秘
摘要:2019云栖大会大数据&AI专场,阿里云智能计算平台事业部研究员关涛.资深专家徐晟来为我们分享<AI加持的阿里云飞天大数据平台技术揭秘>.本文主要讲了三大部分,一是原创技术优 ...
- 工厂方法配置bean
1:静态工厂方法配置bean 1):对象 package com.spring.helloworld; public class Car { private String name; private ...
- php strrev()函数 语法
php strrev()函数 语法 strrev()怎么用? php strrev()函数用于反转字符串,语法是strrev(string),返回已反转的字符串.大理石构件来图加工 作用:反转字符串 ...
- 分布式系统理论基础2 :CAP
本文转自:https://www.cnblogs.com/bangerlee/p/5328888.html 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到 ...
- 【Java架构:基础技术】一篇文章搞掂:Maven
本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 本文基于<Maven 实战>一书进行总结和扩展,大家也可以自行研读此书. 一.Maven简介 1.1.什么是Maven ...