\(\mathcal{Description}\)

  \(n\) 中卡牌,每种三张。对于一次 \(m\) 连抽,前 \(m-1\) 次抽到第 \(i\) 种的概率是 \(p_i\),第 \(m\) 次抽到第 \(i\) 种的概率是 \(q_i\)。若抽到第 \(i\) 种,会等概率地得到三张卡牌中的一张。求得到所有 \(3n\) 张卡的期望 \(m\) 连抽次数。对 \(2000000011\) 取模。

  \(n\le6\),\(m\le64\)。

\(\mathcal{Solution}\)

  目睹 Tiw 踩标算,%%%

\(\mathcal{Case~1}\)

  长得就像状压期望 DP。令 \(f(S,i)\) 表示抽到的卡牌集合为 \(S\)(同种卡牌显然无序,用两个 bit 记录一种卡牌拥有的张数即可)。发现转移会有一个 \(f(S,1)\leftarrow f(S,2)\leftarrow\cdots\leftarrow f(S,m)\leftarrow f(S,1)\) 的大小为 \(m\) 的简单环。手动消元解出来就好。

  考 场 上 写 自 闭 了。

\(\mathcal{Case~2}\)

  长得就像 \(\text{Min-Max}\) 反演——Tiw。\(\text{Min-Max}\) 反演在期望意义下的式子长成:

\[E(\max_{\xi\in S}\{\xi\})=\sum_{T\subseteq S\land T\not=\varnothing}(-1)^{|T|-1}E(\min_{\xi\in T}\{\xi\})
\]

  其中 \(S\) 是随机变量集合。对于本题,我们相当于要求每张卡被抽到时间的最大值的期望,可以用上式反演成求每张卡被抽到时间的最小值的期望。为方便推式子,令 \(p\) 和 \(q\) 的意义为抽到某一张卡的概率。对于某个具体的卡牌集合,就要求至少抽中 \(T\) 中一张卡牌的期望时间。那么:

\[E(\min_{\xi\in T}\{\xi\})=\frac{1}{\displaystyle 1-\left(1-\sum_{c\in T}p_c\right)^{m-1}\left(1-\sum_{c\in T}q_c\right)}
\]

  枚举集合 \(T\),就做完了。(

  复杂度 \(\mathcal O(4^n\log 2000000011)\)。

\(\mathcal{Code}\)

  Case 2.

/* Clearink */

#include <cstdio>

typedef long long LL;

const int MAXN = 9, MAXM = 64, MAXS = 1 << 18, MOD = 2000000011;
int n, m, ans, p[MAXN + 5], q[MAXN + 5]; inline int add ( LL a, const int b ) { return ( a += b ) < MOD ? a : a - MOD; }
inline int sub ( LL a, const int b ) { return ( a -= b ) < 0 ? a + MOD : a; }
inline int mul ( LL a, const int b ) { return ( a *= b ) < MOD ? a : a % MOD; } inline int qkpow ( int a, int b ) {
int ret = 1;
for ( ; b; a = mul ( a, a ), b >>= 1 ) ret = mul ( ret, b & 1 ? a : 1 );
return ret;
} inline void solve ( const int id, const bool s, const int sump, const int sumq, const int ways ) {
if ( id == n + 1 ) {
int val = mul ( ways, qkpow (
sub ( 1, mul ( qkpow ( sub ( 1, sump ), m - 1 ), sub ( 1, sumq ) ) ), MOD - 2 ) );
ans = ( s ? add : sub )( ans, val );
return ;
}
solve ( id + 1, s, sump, sumq, ways );
solve ( id + 1, !s, add ( sump, p[id] ), add ( sumq, q[id] ), mul ( ways, 3 ) );
solve ( id + 1, s, add ( sump, mul ( p[id], 2 ) ), add ( sumq, mul ( q[id], 2 ) ), mul ( ways, 3 ) );
solve ( id + 1, !s, add ( sump, mul ( p[id], 3 ) ), add ( sumq, mul ( q[id], 3 ) ), ways );
} int main () {
freopen ( "arknights.in", "r", stdin );
freopen ( "arknights.out", "w", stdout );
scanf ( "%d %d", &n, &m );
int rv = qkpow ( 300 * n, MOD - 2 );
for ( int i = 1; i <= n; ++ i ) scanf ( "%d", &p[i] ), p[i] = mul ( p[i], rv );
for ( int i = 1; i <= n; ++ i ) scanf ( "%d", &q[i] ), q[i] = mul ( q[i], rv );
solve ( 1, 0, 0, 0, 1 );
printf ( "%d\n", ans );
return 0;
}

Solution -「LOCAL」舟游的更多相关文章

  1. Solution -「LOCAL」二进制的世界

    \(\mathcal{Description}\)   OurOJ.   给定序列 \(\{a_n\}\) 和一个二元运算 \(\operatorname{op}\in\{\operatorname{ ...

  2. Solution -「LOCAL」大括号树

    \(\mathcal{Description}\)   OurTeam & OurOJ.   给定一棵 \(n\) 个顶点的树,每个顶点标有字符 ( 或 ).将从 \(u\) 到 \(v\) ...

  3. Solution -「LOCAL」过河

    \(\mathcal{Description}\)   一段坐标轴 \([0,L]\),从 \(0\) 出发,每次可以 \(+a\) 或 \(-b\),但不能越出 \([0,L]\).求可达的整点数. ...

  4. Solution -「LOCAL」Drainage System

    \(\mathcal{Description}\)   合并果子,初始果子的权值在 \(1\sim n\) 之间,权值为 \(i\) 的有 \(a_i\) 个.每次可以挑 \(x\in[L,R]\) ...

  5. Solution -「LOCAL」Burning Flowers

      灼之花好评,条条生日快乐(假装现在 8.15)! \(\mathcal{Description}\)   给定一棵以 \(1\) 为根的树,第 \(i\) 个结点有颜色 \(c_i\) 和光亮值 ...

  6. Solution -「LOCAL」画画图

    \(\mathcal{Description}\)   OurTeam.   给定一棵 \(n\) 个点的树形随机的带边权树,求所有含奇数条边的路径中位数之和.树形生成方式为随机取不连通两点连边直到全 ...

  7. Solution -「LOCAL」ZB 平衡树

    \(\mathcal{Description}\)   OurOJ.   维护一列二元组 \((a,b)\),给定初始 \(n\) 个元素,接下来 \(m\) 次操作: 在某个位置插入一个二元组: 翻 ...

  8. Solution -「LOCAL」充电

    \(\mathcal{Description}\)   给定 \(n,m,p\),求序列 \(\{a_n\}\) 的数量,满足 \((\forall i\in[1,n])(a_i\in[1,m])\l ...

  9. Solution -「LOCAL」「cov. 牛客多校 2020 第五场 C」Easy

    \(\mathcal{Description}\)   Link.(完全一致)   给定 \(n,m,k\),对于两个长度为 \(k\) 的满足 \(\left(\sum_{i=0}^ka_i=n\r ...

随机推荐

  1. systemd学习及使用

    什么是systemd? (译)systemd是linux系统的一组基础构件块.它提供了一个系统和服务的管理,它以PID 1 的形式运行并启动系统的其余部分.systemd 使用积极的并行化功能,使用s ...

  2. C语言 生成一个随机数

    随机数的生成 有缺陷的生成方式 生成随机数可以使用 <stdlib.h> 里的 int rand(void); 函数实现! 注释: C语言中还有一个 random() 函数可以获取随机数, ...

  3. 详解Scrapy的命令行工具

    接触过Scrapy的人都知道,我们很多操作是需要借助命令行来执行的,比如创建项目,运行爬虫等.所以了解和掌握这些命令对于scrapy的学习是很有帮助的! Scrapy 命令 首先,在scrapy命令中 ...

  4. 论文翻译:2020_Nonlinear Residual Echo Suppression using a Recurrent Neural Network

    论文地址:https://indico2.conference4me.psnc.pl/event/35/contributions/3367/attachments/779/817/Thu-1-10- ...

  5. mybatis关联查询基础----高级映射

    本文链接地址:mybatis关联查询基础----高级映射(一对一,一对多,多对多) 前言: 今日在工作中遇到了一个一对多分页查询的问题,主表一条记录对应关联表四条记录,关联分页查询后每页只显示三条记录 ...

  6. 使用3D Tiles Overview学习3D Tiles

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 3D Tiles的创建是为了在web上传输大量的3D数据集.作为 ...

  7. synergy最佳解决方案——barrier

    synergy最佳解决方案--barrier ​ 不知道大家有没有一套键盘鼠标控制多台电脑的需求,主流的硬件或说软件有大神整理如下: 软件方案: Windows 之间:Mouse Without Bo ...

  8. 使用AJAX请求调用出现HTTPS协议错误问题

    前言: 这又是一个可能是半路就卡机的项目,在调用ajax的时候遇到了下面的这个错. js中有个ajax请求http,url是:http//:.js就提示请求了一个不安全的脚本,在发送ajax请求时,就 ...

  9. 平滑增加Nginx模块

    目录 一:平滑增加Nginx模块 1.1.增加模块必须重新编译 一:平滑增加Nginx模块 1.1.增加模块必须重新编译 解决依赖 编译安装不能解决依赖 yum install zlib zlib-d ...

  10. Iptables的命令与用法

    目录 一:iptables的用法 1.iptables简介 二:Iptables链的概念 1.那四个表,有哪些作用? 2.那五条链,运行在那些地方? 3.Iptables流程图 三:iptables的 ...