Ender的模拟赛D2T1 wait【min-max反演】
题目描述
有一n*m的棋盘,每次随机染黑一个位置(可能染到已经黑了的),当某一行或者一列全为黑色时停止,求期望染色次数(mod 998244353)
对于100%的数据n,m<=1000
题目分析
考完听说是模板题
显然这个“当xxx时停止”非常不好处理,我们不知道它到底有没有停止,方案也很难统计。
不考虑停止,一直染,用a1,a2…ana_1,a_2\dots a_na1,a2…an表示aia_iai行全黑时的次数,用bjb_jbj表示bjb_jbj列全黑时的次数。
我们想知道E(min{a1,a2…an,b1,b2…bm})E\left(\min\{a_1,a_2\dots a_n,b_1,b_2\dots b_m\}\right)E(min{a1,a2…an,b1,b2…bm})
上minmax反演:
min(S)=∑T⊆S,T≠∅(−1)∣T∣−1max(T)\min(S)=\sum_{T\subseteq S,T\ne\empty}(-1)^{|T|-1}\max(T)min(S)=T⊆S,T̸=∅∑(−1)∣T∣−1max(T)
证明:设s1≤s2⋯≤sNs_1\le s_2\dots\le s_Ns1≤s2⋯≤sN,考虑sis_isi在右式的贡献:sis_isi作为max,剩下的数在s1s_1s1到si−1s_{i-1}si−1随便选。当i>1i>1i>1时,集合数为2i−12^{i-1}2i−1,集合奇偶各占一半,相互抵消;当i=1i=1i=1时,集合数为1,贡献为s1s_1s1,得证。
在外面套上一个期望,上式仍然成立。
选出iii行,jjj列,a,ba,ba,b的max就是把这iii行jjj列全部染黑的次数,总个数是k=im+jn−ijk=im+jn-ijk=im+jn−ij,染到第一个的概率是knm\frac k{nm}nmk,期望次数就是nmk\frac {nm}kknm,染第二个的期望次数就是nmk−1\frac {nm}{k-1}k−1nm。所以
E(min(a..,b..))=∑i=0n∑j=0m[i∣∣j](ni)(mj)nm(1+12+...+1im+jn−ij)E(\min(a..,b..))=\sum_{i=0}^n\sum_{j=0}^m[i||j]{n\choose i}{m\choose j}nm(1+\frac 12+...+\frac 1{im+jn-ij})E(min(a..,b..))=i=0∑nj=0∑m[i∣∣j](in)(jm)nm(1+21+...+im+jn−ij1)
附上minmax反演的学习
Code:
#include<bits/stdc++.h>
#define maxn 1005
using namespace std;
const int mod = 998244353;
int n,m,ans,c[maxn][maxn],inv[maxn*maxn],s[maxn*maxn];
int main()
{freopen("wait.in","r",stdin);freopen("wait.out","w",stdout);scanf("%d%d",&n,&m);c[0][0]=1;for(int i=1;i<=max(n,m);i++){c[i][0]=c[i][i]=1;for(int j=1;j<i;j++) c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;}inv[0]=inv[1]=1,s[1]=n*m;for(int i=2;i<=n*m;i++) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod,s[i]=(s[i-1]+1ll*n*m*inv[i])%mod;for(int i=0;i<=n;i++)for(int j=0;j<=m;j++) if(i||j)ans=(ans+1ll*((i+j)&1?1:-1)*c[n][i]*c[m][j]%mod*s[i*m+j*n-i*j])%mod;printf("%d\n",(ans+mod)%mod);
}
Ender的模拟赛D2T1 wait【min-max反演】相关推荐
- 51nod 1843 排列合并机【DP去重】Ender的模拟赛
题目描述 有两个1~n的排列A,B,序列C一开始为空,每次可以选择进行以下两种操作之一 1)若A不为空,则可取出A的开头元素放在序列C的末尾 2)若B不为空,则可取出B的开头元素放在序列C的末尾 这样 ...
- BZOJ 2999 inint【数DP优化】(Ender的模拟赛)
题目描述 从起点1开始,每次选择当前数的任意一位上加上去,问得到n的最小步数以及方案数.多组数据. 例如,从1开始得到100,有很多方法,其中有下面两种方式: A. 1-2-4-8-16-17-18- ...
- 备战Noip2018模拟赛10(B组) T1 Max 和最大
10月20日备战Noip2018模拟赛10 T1 Max和最大 题目描述 CYF的黑题,偏题,怪题,黑科技题,大码农题都做腻了,于是她想做一下签到水题,她希望从有一个长度为ň的整数序列(A1,A2,. ...
- NOI.AC NOIP模拟赛 第六场 游记
NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...
- 10.30 NFLS-NOIP模拟赛 解题报告
总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没 ...
- 模拟赛-20190114-新魔法(distance)
前言 第一篇模拟赛题思路总结 题目相关 题目链接 题目大意 给定一个长度为nnn序列,每一个位置iii都有一种颜色aia_iai 现在有mmm次操作,操作分两种: 第一种操作,将所有颜色xxx都替换 ...
- 3.27模拟赛 sutoringu(后缀数组)
\(\color{white}{mjt是机房模拟赛独自切过题的唯一的人...}\) (应本人要求删掉惹) \(Description\) 给你\(n,k\)和长为\(n\)的字符串\(s\).一个区间 ...
- 省选模拟赛记录(越往下越新哦~~~)
LOG 模拟赛 第一次见尼玛这么给数据范围的-- 开考有点困,迷迷糊糊看完了三道题,真的是像老吕说的那样,一道都不会-- 思考T1,感觉有点感觉,但是太困了,就先码了暴力,发现打表可以50分,于是就大 ...
- [NOIP10.6模拟赛]2.equation题解--DFS序+线段树
题目链接: 咕 闲扯: 终于在集训中敲出正解(虽然与正解不完全相同),开心QAQ 首先比较巧,这题是\(Ebola\)出的一场模拟赛的一道题的树上强化版,当时还口胡出了那题的题解 然而考场上只得了86 ...
最新文章
- android换肤动画,Android-换肤ThemeSkinning使用
- python框架实例_Python之Flask框架项目Demo入门
- 重大BUG:你的淘宝双十一订单可能多付钱了!
- jQuery 中jQuery/$的数据类型是什么?
- backbonejs mvc框架的增删查改实例
- 2017 多校联合训练 3 题解
- 从二分逼近领略计算科学的魅力
- Eclipse中修改SVN地址
- linux使用tar命令打包压缩时排除某个文件夹或文件
- 理解SNS系列之二:更进一步,近观SNS
- AD快捷键无法使用的解决方法
- [随笔所想] 2021年新年碎碎念-加油了不起的干饭人!
- 好用的3D建模软件,就是不用?
- 51花样流水灯c语言程序,51单片机花样流水灯程序
- Socket通讯--数据结构WSADATA
- 15个经典面试问题及回答思路,知乎上转疯了!
- 直播常见问题原因汇总
- 10019---JavaWeb基础--EL
- 日置(HIOKI)MR8875-30数据处理
- 【豆知识】C语言中转义字符“\a”是什么意思?