Link

简要题意:称一个长为 \(2^n-1\) 的排列 \(P\) 像堆,如果 \(P_i \lt P_{2i}\),且 \(P_i \lt P_{2i+1}\)。给定 \(a,b\),设 \(u=2^a,v=2^{b+1}-1\),在所有像堆的排列中任取一个,求 \(P_u \lt P_v\) 的概率。

既然这个排列像堆,那就把这个问题放在满二叉树上解决。结点 \(i\) 的权值是 \(P_i\),子结点是 \(2i\) 和 \(2i+1\)。

首先,如果把结点编号,然后按照权值排列,那么就是对这棵满二叉树做了一次拓扑排序,这里父结点向子结点连有向边。那么,我们只需要考虑结点的一个排列 \(S\),使得 \(i\) 在其子树的前面。

题目中给定的 \(u,v\) 分别是第 \(a+1\) 层最左边的结点和第 \(b+1\) 层最右边的结点。而题目要求的 \(P_u \lt P_v\) 可以看作是从 \(u\) 向 \(v\) 连了一条有向边,或者说 \(S\) 中 \(u\) 必须在 \(v\) 前面。(下面的叙述中,涉及树的概念都是没有考虑这条边的)

这个拓扑序的开头当然是 \(1\),然后整个图被分成了两棵满二叉树,从一棵的某个点向另一棵的某个点连边。

接下来,当然是选择一棵树的根结点。然后,这棵树又被分成了两棵树,其中有一棵是不含 \(u,v\) 之一的。那么,在安排好剩下的两棵树之后,将这棵树随意插入已有的排列即可。

想到这里,一个 DP 的方式呼之欲出:设 \(dp_{i,j}\) 表示剩下一棵 \(i\) 层的满二叉树和一棵 \(j\) 层的满二叉树的方案数,则 \(dp_{i,j}\) 会从 \(dp_{i-1,j}\) 和 \(dp_{i,j-1}\) 转移而来。注意,由于 \(u,v\) 距离叶子层的深度是不变的,所以这样的状态定义已经足够。再用 \(f_{i,j}\) 表示相应的概率。

我们还需要考虑一个普通的 \(i\) 层满二叉树的拓扑序总数。设为 \(S_i\)。

先求 \(S_i\) 的递推式。第一步是选择根结点,然后是将两棵子树的所有排列方式放入拓扑序中。所有排列有 \(S_{i-1}^2\) 种。每棵子树的拓扑序长度为 \(2^{i-1}-1\),所以插入的方式有 \(C_{2^i-2}^{2^{i-1}-1}\) 种。于是

\[S_i=S_{i-1}^2 \times C_{2^i-2}^{2^{i-1}-1}
\]

设 \(u,v\) 分别在倒数第 \(A,B\) 层,则 DP 的初始值为 \(f_{A-1,j}=1\) 对 \(j \ge B\) 成立。

与前面类似可得 \(dp_{i,j}\) 的递推式为:

\[dp_{i,j}=dp_{i-1,j} \times S_{i-1} \times C_{2^i+2^j-3}^{2^{i-1}-1}+dp_{i,j-1} \times S_{j-1} \times C_{2^i+2^j-3}^{2^{j-1}-1}
\]

又由于

\[f_{i,j}=\frac{dp_{i,j}}{S_i \times S_j \times C_{2^i+2^j-2}^{2^i-1}}
\]

所以

\[f_{i,j}=\frac{dp_{i-1,j} \times S_{i-1} \times C_{2^i+2^j-3}^{2^{i-1}-1}+dp_{i,j-1} \times S_{j-1} \times C_{2^i+2^j-3}^{2^{j-1}-1}}{S_i \times S_j \times C_{2^i+2^j-2}^{2^i-1}}
\]
\[=\frac{f_{i-1,j} \times S_{i-1}^2 \times S_j \times C_{2^{i-1}+2^j-2}^{2^{i-1}-1} \times C_{2^i+2^j-3}^{2^{i-1}-1}}{S_i \times S_j \times C_{2^i+2^j-2}^{2^i-1}}+\frac{f_{i,j-1} \times S_{j-1}^2 \times S_i \times C_{2^i+2^{j-1}-2}^{2^{j-1}-1} \times C_{2^i+2^j-3}^{2^{j-1}-1}}{S_i \times S_j \times C_{2^i+2^j-2}^{2^j-1}}
\]
\[=f_{i-1,j} \times \frac{C_{2^{i-1}+2^j-2}^{2^{i-1}-1} \times C_{2^i+2^j-3}^{2^{i-1}-1}}{C_{2^i-2}^{2^{i-1}-1} \times C_{2^i+2^j-2}^{2^i-1}}+f_{i,j-1} \times \frac{C_{2^i+2^{j-1}-2}^{2^{j-1}-1} \times C_{2^i+2^j-3}^{2^{j-1}-1}}{C_{2^j-2}^{2^{j-1}-1} \times C_{2^i+2^j-2}^{2^j-1}}
\]

结合

\[\frac{C_{2^{i-1}+2^j-2}^{2^{i-1}-1} \times C_{2^i+2^j-3}^{2^{i-1}-1}}{C_{2^i-2}^{2^{i-1}-1} \times C_{2^i+2^j-2}^{2^i-1}}
\]
\[=\frac{\frac{(2^{i-1}+2^j-2)!\times(2^i+2^j-3)!}{(2^{i-1}-1)!\times(2^j-1)!\times(2^{i-1}-1)!\times(2^{i-1}+2^j-2)!}}{\frac{(2^i-2)!\times(2^i+2^j-2)!}{(2^{i-1}-1)!\times(2^{i-1}-1)!\times(2^i-1)!\times(2^j-1)!}}
\]
\[=\frac{(2^i+2^j-3)!\times(2^i-1)!}{(2^i+2^j-2)!\times(2^i-2)!}
\]
\[=\frac{2^i-1}{2^i+2^j-2}
\]

最后我们得到了一个漂亮的表达式:

\[f_{i,j}=f_{i-1,j}\times\frac{2^i-1}{2^i+2^j-2}+f_{i,j-1}\times\frac{2^j-1}{2^i+2^j-2}
\]

答案是 \(f_{n-1,n-1}\)。

Code:

#include<bits/stdc++.h>
using namespace std;
const int N=5005,mod=998244353;
int n,A,B;
long long pwr2[N],p[N][N],f[N][N];
int power(int a,int b){
int c=1;
for(;b;b>>=1){
if(b&1)c=1ll*c*a%mod;
a=1ll*a*a%mod;
}
return c;
}
int main(){
scanf("%d%d%d",&n,&A,&B);
A=n-A;B=n-B;
for(int i=1;i<=n;i++)pwr2[i]=power(2,i);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
p[i][j]=(pwr2[i]-1)*power(pwr2[i]+pwr2[j]-2,mod-2)%mod;
for(int i=B;i<=n;i++)f[A-1][i]=1;
for(int i=A;i<=n;i++)
for(int j=B;j<=n;j++)
f[i][j]=(f[i-1][j]*p[i][j]%mod+f[i][j-1]*p[j][i]%mod)%mod;
printf("%d\n",f[n-1][n-1]);
return 0;
}

Solution - AGC060C的更多相关文章

  1. Enterprise Solution 3.1 企业应用开发框架 .NET ERP/CRM/MIS 开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    行业:基于数据库的制造行业管理软件,包含ERP.MRP.CRM.MIS.MES等企业管理软件 数据库平台:SQL Server 2005或以上 系统架构:C/S 开发技术 序号 领域 技术 1 数据库 ...

  2. Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架

    Enterprise Solution 是一套管理软件开发框架,在这个框架基础上开发出一套企业资源计划系统Enterprise Edition. 现将Enterprise Solution开发过程中遇 ...

  3. Windows 10 部署Enterprise Solution 5.5

    Windows 10正式版发布以后,新操作系统带来了许多的变化.现在新购买的电脑安装的系统应该是Windows 10.与当初用户不习惯Windows 7,购买新电脑后第一个想做的事情就是重装成XP,估 ...

  4. Enterprise Solution 企业资源计划管理软件 C/S架构,支持64位系统,企业全面应用集成,制造业信息化

    Enterprise Solution是一套完整的企业资源计划系统,功能符合众多制造业客户要求.系统以.NET Framework技术作为开发架构,完善的功能可有效地帮助企业进行运营策划,减低成本,如 ...

  5. Dynamics CRM 2015-超大Solution导入问题

    我们在将比较大的solution导入CRM的时候,经常会遇到超时的问题,这是因为CRM的本身的优化限制导致的,那么如何解决呢? 官方已经有了解决方案了. 在浏览完两种解决方法之后,我们要知道的是: 1 ...

  6. WATERHAMMER: A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION

    开启阅读模式 WATERHAMMER A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION Waterhammer is an impact load that is ...

  7. Codility NumberSolitaire Solution

    1.题目: A game for one player is played on a board consisting of N consecutive squares, numbered from ...

  8. codility flags solution

    How to solve this HARD issue 1. Problem: A non-empty zero-indexed array A consisting of N integers i ...

  9. The Solution of UESTC 2016 Summer Training #1 Div.2 Problem C

    Link http://acm.hust.edu.cn/vjudge/contest/121539#problem/C Description standard input/output After ...

  10. The Solution of UESTC 2016 Summer Training #1 Div.2 Problem B

    Link http://acm.hust.edu.cn/vjudge/contest/121539#problem/B Description standard input/output Althou ...

随机推荐

  1. mybatis @Param参数 记录

    报错信息 org.apache.ibatis.binding.BindingException: Parameter 'XX' not found. Available parameters are ...

  2. CSS---RGBA和position属性解释

    rgb与rgba的含义 RGB 是代表Red(红色) .Green(绿色). Blue(蓝色)三个单词的缩写. RGBA 颜色值是 RGB 颜色值的扩展,添加了一个 alpha 通道, 它规定了对象的 ...

  3. #根号分治,动态规划#洛谷 5616 [MtOI2019]恶魔之树

    题目传送门 分析 最小公倍数最终一定会被表示成若干个质数指数幂的情况(1的情况就直接乘上二的次幂) 然后每个数的加入相当于对每个质数的指数取最大值,但是如果将每个质数的次数都表示出来状态数很多, 考虑 ...

  4. 内存分析利器之UMDH

    近两周投入分析产品的内存泄漏问题. 测试团队反馈产品在安卓平台运行时,随用户操作,应用占用的内存出现上涨的趋势,停止操作并等待一段时间之后,应用占用的内存没有下降,怀疑存在内存泄漏问题. 结合复现的情 ...

  5. SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用

    SQL DELETE 语句 SQL DELETE 语句用于删除表中的现有记录. DELETE 语法 DELETE FROM 表名 WHERE 条件; 注意:在删除表中的记录时要小心!请注意DELETE ...

  6. 文档在线预览(一)通过将txt、word、pdf、ppt转成图片实现在线预览功能

    @ 目录 一.前言 1.aspose 2 .poi + pdfbox 3 spire 二.将文件转换成图片,并生成到本地 1.将word文件转成图片 (1)使用aspose (2)使用pdfbox ( ...

  7. 如何在HarmonyOS对数据库进行备份,恢复与加密

    数据库备份与恢复 场景介绍 当应用在处理一项重要的操作,显然是不能被打断的.例如:写入多个表关联的事务.此时,每个表的写入都是单独的,但是表与表之间的事务关联性不能被分割. 如果操作的过程中出现问题, ...

  8. 微信小程序三种授权登录的方式

    经过一段时间对微信小程序的研发后 总结出以下三种授权登录的方式,我给他们命名为'一次性授权''永久授权''不授权' 1.一次性授权常规写法,需要获取用户公开信息(头像,昵称等)时,判断调取授权登录接口 ...

  9. 力扣58(java)-最后一个单词的长度(简单)

    题目: 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开.返回字符串中 最后一个 单词的长度. 单词 是指仅由字母组成.不包含任何空格字符的最大子字符串. 示例 1: 输入:s = &q ...

  10. 【云原生】拿下 Gartner 容器产品第一,阿里云打赢云原生关键一战!

    近日,Gartner 发布 2020 年公共云容器报告,据报告显示,阿里云和 AWS 拥有最丰富的产品布局,覆盖 9 项产品能力,并列排名第一. 据 Gartner 分析师评论,阿里云拥有丰富的容器产 ...