min-max容斥
min-max容斥,
\(max(S)=\sum_{T \in S} min(T)*(-1)^{|T|+1}\)
考虑证明
将S的元素降序排序,设\(a_{k}\)为第\(k\)个元素
如果\(min(T)=a_{1}\),贡献为\(a_{1}\)
如果\(min(T)=a_{k}\),那么这个集合必须包含\(a_{k}\),\(1...k\)可以包含也可以不包含,然后有\(2^{k-2}\)种为负,\(2^{k-2}\)种为正,然后就抵消了
min同理对称
拓展min-max容斥
可以将第k大的东西容斥出来
\(kthmax(S)=\sum_{T\in S} (-1)^{|T|-k}c(|T|-1,k-1)min(T)\)
如果min为k,那么就可以包含\(1...k\),且必须包含\(k\),容易发现,集合大小相同的都抵消掉了,但是为什么要有这个\(c(|T|-1,k-1)\)。哦,我们规定如果\(|T| < k\),那么为\(0\),那么只有一个会贡献到,然后剩下都抵消掉了,这个c原来是这么用的
这个对于期望也是成立的。容易理解,都是变量。
期望有些题中,max比较难求,min比较好求,这样我们就可以做了。为什么呢?应为我们可以求取到一个集合中的任意一个数的步数期望,但是取完的期望,这个就可以用min-max,然后就做完了。
[P3175]
其实也可以试试看其他题?
\(E(max(s))\)为所有位变成\(1\)时间最大值的期望
为啥不等于\(max(E(1),E(2),)\)呢?
这个也是比较简单的,感性一下,假如有\(5\)个数随机从\(0~10\)里面去数,那么\(max(E())\)就是\(5\),\(E(max())\)肯定要更大一点,这个因为这导致最大值的期望会考虑到分布的尾部特性,而期望的最大值则不会。这个是智普清言举了个例子嗷
然后我们就直接\(E(max(f(1),f(2),f(3)))\)代表取完这个集合的步数期望,\(f(i)\)代表取完\(i\)的这个步数,这个东西是个随机变量嗷。然后我们容斥变成\(E(min(f(1),f(2),f(3)))\),就变成取到集合里的一个数的步数,这个算期望,就比较简单。然后考虑求这个。假设有\(n\)个,有\(k\)个合法,那么是不是就是\(\frac{1}{\sum p}\),
我们要将和这个集合有交的所有东西都贡献一遍。正难则反,也就是求和这个东西没交的集合的概率,这个可以使用高维前缀和
[P4707]
吃吃吃!
非常难搞。考虑从数据范围入手,我们考虑怎么把这个n-k<=10给搞一下吧。
从拓展min-max入手,我们要求的就是这个东西
\(kthmax(S)=\sum_{T\in S} (-1)^{|T|-k}c(|T|-1,k-1)min(T)\)
这个k比较大,那么我们的T集合也就比较大,然后这个也是很好求,就是概率之和的倒数。那么变一下,设k=n-k+1,哦,这个就是要求集合出现第k大的数。前面是不是都写错了。我们一开始是第k小的,然后转变一下就变成的第k大的,这个k<=11。
\(kthmax(S)=\sum_{T\in S} (-1)^{|T|-k}c(|T|-1,k-1)min(T)\)
\(\sum_{T\in S} (-1)^{|T|-k}c(|T|-1,k-1)\frac{1}{\sum_{i\in T} p[i]}\)
看起来没办法做了。考虑把这个东西使用dp。因为概率的和\(<=10000\),要怎么转移呢。设dp[i][j][k]为,当前考虑到第\(i\)个数了,概率为和\(j\),\(k\)为状态里的之的\((-1)^{|T|-k}c(|T|-1,k-1)\),看看题解,貌似得有第三维,才能转移。
其实\(n^2m\)是好做的,直接把\(|T|\)压进去,然后求下方案数,就做完了
枚举物品,看看这个物品选还是不选。不选简单
选:
\(dp[i][j][k]=dp[i-1][j-p[i]][?]\)我们前面一项系数是负变正,我们选了一个数,这个东西就要,那么|T|增加1带来的影响就是乘一个\(\frac{|T|}{|T|-k}\),但是这个东西还是和|T|有关。考虑组合数递推式,也就是杨辉三角\(c_{n}{k}=c_{n-1}{k}+c_{n-1}{k-1}\)哦哦哦,天才!\(dp[i][j][k]=dp[i-1][j-p[i]][k-1]+dp[i-1][j-p[i]][k]\)
还有前面的,容易发现,第二个系数取-,第一个系数是正的。
\(dp[i][j][k]=dp[i-1][j][k]+dp[i-1][j-p[i]][k-1]-dp[i-1][j-p[i]][k]\)
就这?这不比SAM简单
边界吗,直接\(dp[0][0][0]=1\),理解一下。理解不了,拓展组合数定义了。
\(dp[0][0][0]=0,dp[k][0][0]=1;\)其他都是1
那么这样对\(|T| < k\)的东西,那么我们的贡献得是\(dp[i][j][k]\),我们是想让\(|T| < k\)的贡献都为0,从转移式考虑,好像确实是对的。
我觉得这个东西是空集,那么\(c(-1,-1)=1\),哦,这个就是杨辉三角那个,我懂了