题目描述

有一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&gt;1i&gt;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∑n​j=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反演】相关推荐

  1. 51nod 1843 排列合并机【DP去重】Ender的模拟赛

    题目描述 有两个1~n的排列A,B,序列C一开始为空,每次可以选择进行以下两种操作之一 1)若A不为空,则可取出A的开头元素放在序列C的末尾 2)若B不为空,则可取出B的开头元素放在序列C的末尾 这样 ...

  2. BZOJ 2999 inint【数DP优化】(Ender的模拟赛)

    题目描述 从起点1开始,每次选择当前数的任意一位上加上去,问得到n的最小步数以及方案数.多组数据. 例如,从1开始得到100,有很多方法,其中有下面两种方式: A. 1-2-4-8-16-17-18- ...

  3. 备战Noip2018模拟赛10(B组) T1 Max 和最大

    10月20日备战Noip2018模拟赛10 T1 Max和最大 题目描述 CYF的黑题,偏题,怪题,黑科技题,大码农题都做腻了,于是她想做一下签到水题,她希望从有一个长度为ň的整数序列(A1,A2,. ...

  4. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  5. 10.30 NFLS-NOIP模拟赛 解题报告

    总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没 ...

  6. 模拟赛-20190114-新魔法(distance)

    前言 第一篇模拟赛题思路总结 题目相关 题目链接 题目大意 给定一个长度为nnn序列,每一个位置iii都有一种颜色aia_iai​ 现在有mmm次操作,操作分两种: 第一种操作,将所有颜色xxx都替换 ...

  7. 3.27模拟赛 sutoringu(后缀数组)

    \(\color{white}{mjt是机房模拟赛独自切过题的唯一的人...}\) (应本人要求删掉惹) \(Description\) 给你\(n,k\)和长为\(n\)的字符串\(s\).一个区间 ...

  8. 省选模拟赛记录(越往下越新哦~~~)

    LOG 模拟赛 第一次见尼玛这么给数据范围的-- 开考有点困,迷迷糊糊看完了三道题,真的是像老吕说的那样,一道都不会-- 思考T1,感觉有点感觉,但是太困了,就先码了暴力,发现打表可以50分,于是就大 ...

  9. [NOIP10.6模拟赛]2.equation题解--DFS序+线段树

    题目链接: 咕 闲扯: 终于在集训中敲出正解(虽然与正解不完全相同),开心QAQ 首先比较巧,这题是\(Ebola\)出的一场模拟赛的一道题的树上强化版,当时还口胡出了那题的题解 然而考场上只得了86 ...

最新文章

  1. android换肤动画,Android-换肤ThemeSkinning使用
  2. python框架实例_Python之Flask框架项目Demo入门
  3. 重大BUG:你的淘宝双十一订单可能多付钱了!
  4. jQuery 中jQuery/$的数据类型是什么?
  5. backbonejs mvc框架的增删查改实例
  6. 2017 多校联合训练 3 题解
  7. 从二分逼近领略计算科学的魅力
  8. Eclipse中修改SVN地址
  9. linux使用tar命令打包压缩时排除某个文件夹或文件
  10. 理解SNS系列之二:更进一步,近观SNS
  11. AD快捷键无法使用的解决方法
  12. [随笔所想] 2021年新年碎碎念-加油了不起的干饭人!
  13. 好用的3D建模软件,就是不用?
  14. 51花样流水灯c语言程序,51单片机花样流水灯程序
  15. Socket通讯--数据结构WSADATA
  16. 15个经典面试问题及回答思路,知乎上转疯了!
  17. 直播常见问题原因汇总
  18. 10019---JavaWeb基础--EL
  19. 日置(HIOKI)MR8875-30数据处理
  20. 【豆知识】C语言中转义字符“\a”是什么意思?

热门文章

  1. Python day04——列表、元组、字典
  2. c语言----windows系列教程之音频录入与处理
  3. 如何用计算机把英文变成中文,电脑英文系统怎么设置回中文
  4. <insert></insert>
  5. 大一统多任务,UTC通用文本分类模型,刷榜了!简单、易用、高效的UTC通用文本分类技术,解决分类任务难题
  6. win10下CH340模块下载stc89c52程序
  7. ros2 for voice
  8. 凤凰SIM卡读卡器64位驱动
  9. mybatis多表查询(两表)例子
  10. [转载]陕南的葬礼_陕南赤子_新浪博客