前几周的模拟赛才遇到过类似的套路,现在在 AT 上遇到又不会了……于是都记录一下。

其实写完之后还是感觉不太能熟练运用……,可能需要多做题做理解。

【XSY4214】quq

题面:http://192.168.102.138/JudgeOnline/problem.php?cid=1818&pid=2

题解:

设 m=max⁡aim=\max a_im=maxai​,即编号最大的可能被扭到的蛋。

首先先将扭蛋机按 aia_iai​ 从小到大排序。先考虑最优策略是什么,设 bib_ibi​ 表示 ≥i\geq i≥i 的最小的 aaa 值,那么假设现在还未扭到的蛋的集合是 SSS,其中编号最大的是 maxidmaxidmaxid,那么我们选的扭蛋机大小肯定是 bmaxidb_{maxid}bmaxid​。感性理解就是扭编号大的扭蛋时也有可能扭到编号小的扭蛋,而扭编号小的扭蛋时不可能扭到编号大的扭蛋,所以如果先扭编号小的扭蛋再扭编号大的扭蛋,就会在扭编号大的扭蛋时浪费更多的期望次数,所以我们要选能扭到所有扭蛋且 aaa 值最小的扭蛋机。

由于扭哪个扭蛋机是由 maxidmaxidmaxid 决定的,所以我们枚举每个扭蛋 xxx,计算出它作为 maxidmaxidmaxid 出现出现的概率以及它作为 maxidmaxidmaxid 出现时,使得 maxidmaxidmaxid 改变(即扭到它)的期望扭蛋次数。

期望扭蛋次数即为 bxb_{x}bx​,现在关键问题是求出 xxx 作为 maxidmaxidmaxid 出现的概率,即操作完 x+1∼mx+1\sim mx+1∼m 时还没有扭到 xxx 的概率。

对于任意一个时刻,当前还未扭到的蛋的集合为 SSS,那么对于所有 i∈Si\in Si∈S,下一个扭到的未出现过的蛋为 iii 的概率都是相同的。也就是说如果我们只看每一个蛋第一次被扭出的时间的顺序,那么每一种顺序(1∼m1\sim m1∼m 的每一种排列)的出现概率都是相同的。

那么操作完 x+1∼mx+1\sim mx+1∼m 时还没有扭到 xxx 的概率,就相当于在这个 1∼m1\sim m1∼m 的排列中 xxx 出现位置比 x+1∼mx+1\sim mx+1∼m 都要靠后的概率,即为 1m−x+1\frac{1}{m-x+1}m−x+11​。

【ARC114E】Paper Cutting 2

题意:你有一张大小为 H×WH\times WH×W 的长方形纸,被划分为 H×WH\times WH×W 个格子,其中有恰好两个格子是黑色的,其余都是白色的。你需要进行如下操作:

  • 假设你当前还剩下一张大小为 h×wh\times wh×w 的纸,那么这张纸被 h−1h-1h−1 条横线和 w−1w-1w−1 条竖线划分为 h×wh\times wh×w 个格子,你将在这 h+w−2h+w-2h+w−2 条线中随机选择一条,并沿着这一条线将整张纸剪开剪成两张纸,然后:

    • 如果两个黑色格子仍然在同一张纸上,则扔掉另一张纸,重复执行上述操作。
    • 否则结束操作。

求期望进行的操作次数,对 998244353998244353998244353 取模。

H,W≤105H,W\leq 10^5H,W≤105。

题解:

先讲一维的情况。假设纸条长度为 nnn(有 nnn 个格子),两个黑格子分别是 x,yx,yx,y(x<yx<yx<y)。

第一想法是 O(n3)O(n^3)O(n3) 的 DP(记录两个黑格子两边剩余的格子数),但貌似不太能做,因为状态数已经是 O(n2)O(n^2)O(n2) 的了。

难点在于这个概率可能比较难处理,毕竟纸条剩余长度不同概率就不同。

一个非常高妙的转化是:题目等价于,我们随机一个 1∼n−11\sim n-11∼n−1 的排列,并按随机出的排列顺序切纸条,切的过程中只有合法才计数(不合法的情况有:当前切线所在纸条已经和黑格子分离了、两个黑格子之前就已经被切开了等),求切的次数的期望。

证明是不难的,假设已经切到了某种状态(确定了排列的前若干位),对于下一步可能的每种合法的切法,它们成为下一步(在后面的排列中作为第一个合法的切法出现)的概率是相等的。

现在我们只需要统计切的次数的期望即可。

这是简单的,枚举切第 iii 条线的贡献,合法的条件是:iii 到黑格子之间、黑格子与黑格子之间没有线被切过。假设需要某 kkk 条线不被切过,那么第 iii 条线的贡献就是 1k+1\frac{1}{k+1}k+11​。

这个转化大概思路就是:考虑把不合法的操作也加入操作序列内填充成一个排列,使得每种操作序列出现的概率不变(基数增大但概率不变),而对排列来说概率是好求的。

二维的情况也是类似的,事实上貌似可以扩展到 nnn 维?

#include<bits/stdc++.h>using namespace std;namespace modular
{const int mod=998244353;inline int add(int x,int y){return x+y>=mod?x+y-mod:x+y;}inline int dec(int x,int y){return x-y<0?x-y+mod:x-y;}inline int mul(int x,int y){return 1ll*x*y%mod;}
}using namespace modular;inline int poww(int a,int b)
{int ans=1;while(b){if(b&1) ans=mul(ans,a);a=mul(a,a);b>>=1;}return ans;
}inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^'0');ch=getchar();}return x*f;
}int H,W,h1,w1,h2,w2;int main()
{H=read(),W=read(),h1=read(),w1=read(),h2=read(),w2=read();if(h1>h2) swap(h1,h2);if(w1>w2) swap(w1,w2);int ans=0;for(int i=1;i<H;i++){int k;if(i<h1) k=h1-1-i+h2-h1;else if(i<h2) k=h2-h1-1;else k=i-h2+h2-h1;k+=w2-w1;ans=add(ans,poww(k+1,mod-2));}for(int i=1;i<W;i++){int k;if(i<w1) k=w1-1-i+w2-w1;else if(i<w2) k=w2-w1-1;else k=i-w2+w2-w1;k+=h2-h1;ans=add(ans,poww(k+1,mod-2));}printf("%d\n",ans);return 0;
}

两道类似的概率期望题目相关推荐

  1. 腾讯实习生面试2016两道面试题目?(知乎)

    腾讯实习生面试2016两道面试题目?修改 谢谢大神们高质量的回答,满满干货,excited ------------------------------------------------------ ...

  2. 两道概率题-供大家周末把玩

    两道概率题-供大家周末把玩 题目 1.给定一个函数rand5(),该函数能等概率生成1-5之间的整数(包括1和5),如何用该函数等概率生成整数1-7? 解法 本以为很简单,做了以后才发现其实并不简单, ...

  3. 概率论与数理统计【二】随机事件与概率(2) - 常用求概率公式与例题两道

    本节为概率论与数理统计复习笔记的第二节,随机事件与概率(2),主要包括:加法公式.减法公式.条件概率公式.乘法公式.全概率公式.贝叶斯公式以及两道例题. 1.常用的求概率公式 1.加法公式 P(A∪B ...

  4. 2014年京东校招笔试中的两道java题目

    两道都是选择题 1,调用下面的函数的返回是(C) public static int testt() {try {return 1:}catch(Exception e){return 2;}fina ...

  5. 两道例题详解贝叶斯定理

    导读:本文首先讲解条件概率及贝叶斯定理,之后有两道例题,看看你都能答对吗? 作者:基思·斯坦诺维奇(Keith E. Stanovich).理查德·韦斯特(Richard F. West).玛吉·托普 ...

  6. 科林明伦杯哈理工第九届——分布式服务(概率期望+思维)

    题目描述 小赵实习时负责的服务模块由多个实例共同组成,当出现一个请求时,反向代理会将请求随机的转发到一个实例上进行处理.由于网络波动等原因,请求可能出现超时的情况,这时候,客户端会进行重试,请求会再一 ...

  7. 概率期望题(期望 DP)做题记录

    概率期望题(期望 DP)做题记录 P3830 [SHOI2012]随机树 难点在于第二问:生成树的期望深度. 不 wei zhuo 捏,设 \(dp_{i,j}\) 表示已经有了 \(i\) 个叶子结 ...

  8. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp

    题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...

  9. [NOIP2016]换教室(概率期望$DP$)

    其实吧我老早就把这题切了--因为说实话,这道题确实不难啊--李云龙:比他娘的状压DP简单多了 今天我翻以前在Luogu上写的题解时,突然发现放错代码了,然后被一堆人\(hack\)--蓝瘦啊\(ORZ ...

最新文章

  1. 单机部署open-falcon 0.2
  2. attiny13a程序实例_ATtiny13A带A新版本
  3. Linux在任务栏上找不到最小化窗口的解决方法
  4. hibernate继承关系映射关系方法(二)--每个子类一张表
  5. 对比tensorflow查看打印输出张量Tensor的两种方法(急切执行tf.enable_eager_execution()和tf.Session.run())
  6. 如何在 SAP Spartacus 自定义 UI 里使用标准 UI 的上下文数据 - let 关键字的用法
  7. 可信计算3.0工程初步pdf_查校 | 英国大学工业工程与运筹学专业40个授课硕士+研究Mphil/Phd 项目汇总...
  8. 易宝典文章——玩转Office 365中的Exchange Online服务 之二十六 根据文本内容筛选群发邮件...
  9. hdfs和日志业务系统
  10. windows 2003 远程桌面无法使用剪贴板共享纯文本的解决方法(亲测可用)
  11. lucene-SpanNotQuery和SpanOrQuery交迭与全局跨度
  12. java中普通变量、静态变量、静态代码块初始化的顺序辨析
  13. php一行代码实现人脸识别,一行代码搞定人脸识别
  14. 首旅如家仍计划全年开店800-1000家;万豪旗下双品牌酒店“帆船”于宁夏银川启幕 | 美通企业日报...
  15. 获取阿里云docker加速器地址
  16. C# 实现Remoting双向通信
  17. js 将简体字转化成繁体字
  18. ip变更导致连接不到mysql的解决办法
  19. k2450 linux 显卡驱动,Debian系统安装NVIDIA驱动支持双显卡切换
  20. 面试中可以谎报薪资嘛?

热门文章

  1. shell+curl+fortune+pushplus–>每日一言
  2. Python同过百度翻译制作翻译程序
  3. Python使用PyAudio制作录音工具
  4. 计算机win7不断重启,win7系统电脑一开机就自动重启的解决方法
  5. 用Mathematica和SciPy阐明Jacobi椭圆函数的定义方法
  6. Unity3D学习:结合Kinect进行游戏开发 | 孤舟博客
  7. 集成开发项目与开发集成项目的区别
  8. 谈谈如何写好一份简历
  9. 华为交换机关机方法_华为路由器交换机基本操作
  10. spring-day03-底层事务、AOP