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. C#无需第三方插件实现json和table互转

    using System; using System.Collections.Generic; using System.Collections; using System.Linq; using S ...

  2. AXI4自定义FPGA外设理论基础

    AXI4自定义FPGA外设理论基础 1.理论目的 在前面的基于AXI4的自定义GPIO的实验中,大概地了解了AXI4的工作模式,即以寄存器为缓冲,实现操作和传输.那个实验只是将自定义的FPGA连接到现 ...

  3. KingbaseESV8R6 heap table末端垃圾页回收机制

    前言 默认情况下,vacuum表不能释放磁盘空间,只是在dead tuple做个标记位,但heap table末端的垃圾页可以被truncate,从磁盘中释放空间.例如表的末尾的100个数据块里面全是 ...

  4. spark和hadoop的区别

    hadoopHadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. Hadoop实现了一个分 ...

  5. 企业数据清洗项目实践day3

    封装昨天的生成json方法,生成标准字段方法以及生成最终文件的方法. 1 import pandas as pd 2 import xlwt 3 """ 4 rank的一 ...

  6. 使用 rollup 打包可按需加载的 NPM 包

    安装 rollup npm install rollup --save-dev 配置文件 rollup.config.js export default { input: 'src/index.js' ...

  7. 深度剖析 Spring 框架在 Java 应用开发中的优势与应用

    Spring 是用于企业 Java 应用程序开发的最流行的应用程序开发框架.全球数百万开发人员使用 Spring Framework 创建高性能.易于测试和可重用的代码.Spring Framewor ...

  8. Windows下Net6开源akstream项目vs2022调试GB28181协议对接摄像头全流程

    一.背景介绍 笔者经历多个项目对接摄像头需求,不同项目具体要求又有所不同,碰到的摄像头对接开发问题,整理记录.此篇主要用于记录备用及给有缘人提供解决思路等. 1.   同一局域网对接(海康摄像头),如 ...

  9. ViT:拉开Trasnformer在图像领域正式挑战CNN的序幕 | ICLR 2021

    论文直接将纯Trasnformer应用于图像识别,是Trasnformer在图像领域正式挑战CNN的开山之作.这种简单的可扩展结构在与大型数据集的预训练相结合时,效果出奇的好.在许多图像分类数据集上都 ...

  10. 密码学中的RSA算法与椭圆曲线算法

    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全.密码学.联邦学习.同态加密等隐私计算领域的技术和内容. 在数字安全领域,加密算法扮演着至关重要的角色.它们确保了信息的机 ...