ZS Shuffles Cards 题解
ZS Shuffles Cards 题解
我们把每一次抽一些数字牌再抽到 joker 视作一局游戏。
每局期望轮数
首先考虑 \(f_i\) 表示每一局游戏抽出 \(i\) 张牌的概率。
那么就是先抽出 \(i - 1\) 张数字牌,再抽出一张 joker 。
概率就是 :
\]
一局游戏期望抽牌(轮)数量也就是:
E &= \sum_{i = 1}^{n + 1} i \times f_i\\
&= \sum_{i = 1}^{n + 1} i \times \frac m {n + m - i +1}\prod_{k = 0} ^ {i - 2} \frac {n - k}{m + n - k}\\
\end{aligned}
\]
直接算这个式子会超时,我们可以先预处理后面的部分:
令
\]
可得
\]
就转化成
\]
期望局数
令 \(h_i\) 表示集合 \(S\) 内还缺 \(i\) 个数才凑够 \(n\) 时,期望再玩多少局。
显然答案就是 \(h_n\)。
若抽到了缺少的牌,那么就是:
\(\frac k {m + k} f_{k-1}\)
若抽到鬼牌,那么就是(加 1 是因为新的一局):
\(\frac m {m + k} {f_k + 1}\)
所以就是:
\]
化简得:
\]
初始 \(f_0 = 1\) 。
因为即使你的集合内的数已经凑够了,你也要抽到 joker 才能停止。
最后答案就是
\]
温馨提示
建议预处理逆元(我最开始没有预处理虽然本地没超时但测评会T)
code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod = 998244353;
const int N = 4e6 + 10;
ll n, m, w[N], ans1 = 0, ans2 = 0;
ll pr[N], ip[N], rv[N];
inline ll mpow(ll x, ll k){
ll ans = 1;
while(k){
if(k & 1) ans = ans * x % mod;
k >>= 1;
x = x * x % mod;
}
return ans;
}
void pre(int n){
pr[0] = 1;
for(int i = 1; i <= n; ++i) pr[i] = pr[i - 1] * i % mod;
ip[n] = mpow(pr[n], mod - 2);
for(int i = n - 1; i >= 1; --i) ip[i] = ip[i + 1] * (i + 1) % mod;
for(int i = 1; i <= n; ++i) rv[i] = ip[i] * pr[i - 1] % mod;
}
void op(){
w[1] = 1;
for(int i = 1; i <= n + 1; ++i){
w[i + 1] = w[i] * (n - i + 1) % mod * rv[n + m - i + 1] % mod;
ans1 = (ans1 + i * m % mod * rv[n + m - i + 1] % mod * w[i] % mod) % mod;
}
ans2 = m + 1;
for(int i = 2; i <= n; ++i){
ans2 = (ans2 + m * rv[i] % mod) % mod;
}
}
int main(){
cin>> n >> m;
pre(n + m + 1);
op();
cout<<ans1 * ans2 % mod;
return 0;
}
ZS Shuffles Cards 题解的更多相关文章
- [cf1392H]ZS Shuffles Cards
考虑统计每一轮(以抽到小丑为一轮)的贡献,不难发现答案即期望轮数*每轮期望次数 关于期望轮数,当前牌堆里已经在$S$中的卡实际上没有意义,不妨将这一类卡从牌堆中删除 此时,定义$f_{i}$表示$S$ ...
- Codeforces 1392H - ZS Shuffles Cards(DP+打表找规律)
Codeforces 题面传送门 & 洛谷题面传送门 真·两天前刚做过这场的 I 题,今天模拟赛就考了这场的 H 题,我怕不是预言带师 提供一种奇怪的做法,来自于同机房神仙们,该做法不需要 M ...
- Solution -「CF 1392H」ZS Shuffles Cards
\(\mathcal{Description}\) Link. 打乱的 \(n\) 张编号 \(1\sim n\) 的数字排和 \(m\) 张鬼牌.随机抽牌,若抽到数字,将数字加入集合 \(S ...
- CF949E Binary Cards 题解
题面 首先发现:一个数最多会出现1次: 然后深入推出:一个数不会既用它又用它的相反数: 这样就可以依次考虑每一位了: 如果所有的数都不含有这一位,那么就直接把所有的数除以2 如果含有,那么就减去这一位 ...
- CF908A New Year and Counting Cards 题解
Content 有 \(n\) 张卡牌,每张卡牌上只会有大小写字母和 \(0\sim 9\) 的阿拉伯数字.有这样一个描述:"如果卡牌正面写有元音字母(\(\texttt{A,E,I,O,U ...
- CF701A Cards 题解
Content 有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\),试在其中找到 \(\dfrac{n}{2}\) 对数,使得每个数对的元素的和都相等. 数据范围:\(2 ...
- luogu P1446 [HNOI2008]Cards
题目链接 luogu P1446 [HNOI2008]Cards 题解 题意就是求染色方案->等价类 洗牌方式构成成了一个置换群 然而,染色数限制不能用polay定理直接求解 考虑burnsid ...
- [Codeforces 864A]Fair Game
Description Petya and Vasya decided to play a game. They have n cards (n is an even number). A singl ...
- Codeforces 744C Hongcow Buys a Deck of Cards 状压dp (看题解)
Hongcow Buys a Deck of Cards 啊啊啊, 为什么我连这种垃圾dp都写不出来.. 不是应该10分钟就该秒掉的题吗.. 从dp想到暴力然后gg, 没有想到把省下的红色开成一维. ...
- CF815D Karen and Cards 官方题解翻译
看到这道题,网上没有中文版的官方题解,于是就自己翻译了一遍. 不是机器翻译,是一个字一个字纯手翻译的,如果有错误欢迎指正. 比如我们有一张卡片,三个参数分别是 a1 = 4, b1 = 2, c1 = ...
随机推荐
- 2020-11-07:已知一个正整数数组,两个数相加等于N并且一定存在,如何找到两个数相乘最小的两个数?
福哥答案2020-11-07: 1.哈希法.2.排序+双指针夹逼. golang代码如下: package main import ( "fmt" "sort" ...
- Kerberos协议原理
本文主要介绍Kerberos认证协议的原理以及解决了什么问题 Kerberos是什么 Kerberos是计算机网络世界中的一种身份认证协议. 身份认证是我们日常生活中经常进行的活动,比如我们要去银行取 ...
- select_related一对一、多对一查询优化
select_related一对一.多对一查询优化 Course.objects.all().select_related('teacher') 查询课程时顺带查出老师的信息
- 用好kafka,你不得不知的那些工具
前言 工欲善其事,必先利其器.本文主要分享一下消息中间件kafka安装部署的过程,以及我平时在工作中针对kafka用的一些客户端工具和监控工具. kafka部署架构 一个kafka集群由多个kafka ...
- phalApi非常好用的php-api框架
偶然的一天,在开源中国,找到了phalApi,看到了介绍,我一下子被吸引了,这正是我一直要找的后端生成json的API框架,有了这个造数据的系统,我前端做得更得心应手了,渐渐我有了全栈开发的想法!
- 微软Build 2023两大主题:Copilots和插件
在本周大型微软人工智能 2023 开发者大会的开幕式上,人工智能站到了舞台中央--前台和后台以及介于两者之间的所有舞台. 贯穿会议的两个主要主题是Copilots - 涵盖广泛产品和服务的AI助手 - ...
- R 语言常用操作与函数汇总
总结了一下 R 语言中常用的一些操作与函数使用,抛砖引玉,分享一下给大家,如有错误的地方欢迎留言指正. 怎样显示 R 软件中某个包中包含的全部数据集? > library(MASS)> d ...
- 【Python&RS】GDAL对栅格数据重采样/对齐栅格
GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库.它利用抽象数据模型来表达所支持的各种文件格式.它 ...
- Helm实战案例二:在Kubernetes(k8s)上使用helm安装部署日志管理系统EFK
目录 一.系统环境 二.前言 三.日志管理系统EFK简介 四.helm安装EFK 4.1 helm在线安装EFK 4.2 helm离线安装EFK(推荐) 五.访问kibana 5.1 数据分片 六.卸 ...
- 怎么利用大厂的API将大段音频转成文本
日常办公中,我们经常要开会和写会议纪要.传统模式下,我们需要非常认真地听会议中每一句话,记下自己认为的核心的话,并在会后经过多次修改形成会议纪要.现在,聪明人已 经不那么干了,借助几百块的讯飞录音笔, ...