「ZJOI 2010」 排列计数

时间:2022-09-24 21:50:14

题目链接

戳我

\(Solution\)

其实我们可以发现这题等价于让你求:

用\(1\)~\(n\)的数组成一个完全二叉树使之满足小根堆性质的方案数

于是我们可以考虑\(dp\)

假设我们现在在\(i\)点,\(i\)的子节点个数为\(s[i]\)(包括自己)

则:

\(dp[i]=C(s[i]-1,s[i*2])*f[i*2]*f[i*2+1]\)

\(ps:\)

因为是二叉树所以\(i*2\)和\(i*2+1\)为\(i\)的两个儿子

这个式子很容易看懂吧。

在子节点中选一些填入左儿子,一些填入右儿子,右儿子和左儿子都要满足小根堆的性质

\(Code\)

#include<bits/stdc++.h>
#define rg register
#define int long long
using namespace std;
int read() {
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();
return f*x;
}
int f[1000001],s[2000011],dp[2000011];
int ksm(int a,int b,int p){
int ans=1;
while(b){
if(b&1) ans=ans*a%p;
a=a*a%p,b>>=1;
}
return ans;
}
int c(int n,int m,int p){return f[n]*ksm(f[m]*f[n-m]%p,p-2,p)%p;}
int lucas(int n,int m,int p){ return m?c(n%p,m%p,p)*lucas(n/p,m/p,p)%p:1; }
main(){
int p,n;
cin>>n>>p,f[0]=1;
for(int i=1;i<=n;i++) f[i]=f[i-1]*i%p;
for(int i=1;i<=n;i++) s[i]=1;
for(int i=n;i>=2;i--) s[i>>1]+=s[i];
for(int i=n+1;i<=n*2+1;i++) dp[i]=1;
for(int i=n;i>=1;i--)
dp[i]=lucas(s[i]-1,s[i*2],p)%p*dp[i*2]%p*dp[i*2+1]%p;
cout<<dp[1];
}

「ZJOI 2010」 排列计数的更多相关文章

  1. &lbrack;ZJOI 2010&rsqb;Perm 排列计数

    Description 题库链接 询问有多少个 \(1\sim N\) 的排列 \(P\) 满足" \(\forall i\in[2,N], P_i>P_{\frac{i}{2}}\) ...

  2. loj &num;2509&period; 「AHOI &sol; HNOI2018」排列

    #2509. 「AHOI / HNOI2018」排列   题目描述 给定 nnn 个整数 a1,a2,…,an(0≤ai≤n),以及 nnn 个整数 w1,w2,…,wn.称 a1,a2,…,an 的 ...

  3. 「状压DP」「暴力搜索」排列perm

    「状压DP」「暴力搜索」排列 题目描述: 题目描述 给一个数字串 s 和正整数 d, 统计 sss 有多少种不同的排列能被 d 整除(可以有前导 0).例如 123434 有 90 种排列能被 2 整 ...

  4. 「CTSC 2011」排列

    「CTSC 2011」排列 要求不存在公差为 A 或者公比为 B 的子列,那么实际上可以把该问题转化为求一个图的最优拓朴序. 任意差为 A 或者比为 B 的两个数连一条边. 求一个合法序列的答案可以用 ...

  5. &lbrack;ZJOI 2010&rsqb;count 数字计数

    Description 题库链接 问你 \([l,r]\) 区间内所有整数中各个数码出现了多少次. \(1\leq a\leq b\leq 10^{12}\) Solution 数位 \(DP\) . ...

  6. 「ZJOI Day2」游记

    Day-1 晚上一直在出自己做的模拟赛的T1,真的快要死掉了. 分类讨论几十种情况. 窝还是找了Bluesky大佬一起来验题,她瞬间就A掉了这一道题目...自闭了.. 诶,我还是太弱了. 之前教练组织 ...

  7. loj&num;2509&period; 「AHOI &sol; HNOI2018」排列&lpar;思维题 set&rpar;

    题意 题目链接 Sol 神仙题Orz 首先不难看出如果我们从\(a_i\)向\(i\)连一条边,我们会得到以\(0\)为根的树(因为每个点一定都有一个入度,出现环说明无解),同时在进行排列的时候需要保 ...

  8. 【LOJ】&num;2509&period; 「AHOI &sol; HNOI2018」排列

    题解 虽然要求一个dfs序,但是不是从根开始贪心 从最小的点开始贪心,最小的点显然是父亲选了之后马上就选它 那么我们每次把最小的点和父亲合并,两个联通块之间也是如此 对于两个联通块,他们合并的顺序应该 ...

  9. 「BZOJ 1924」「SDOI 2010」所驼门王的宝藏「Tarjan」

    题意 一个\(r\times c\)的棋盘,棋盘上有\(n\)个标记点,每个点有三种类型,类型\(1\)可以传送到本行任意标记点,类型\(2\)可以传送到本列任意标记点,类型\(3\)可以传送到周围八 ...

随机推荐

  1. js正则表达式大全&lpar;2&rpar;

    在JAVASCRIPT里面判断一个字符串是否是电子邮件的格式: if(formname.email.value!=formname.email.value.match(/^\w +[@]\w +[.] ...

  2. linux命令之vim使用-(转)vim的保存文件和退出命令

    博客地址: http://blog.sina.com.cn/s/blog_5e357d2d0100zmth.html

  3. &lpar;Java&rpar;微信之个人公众账号开发&lpar;一&rpar;——进入开发者模式

    本篇文章将教大家如何建立微信个人公众账号,(注意:后台全部是用javaweb相关技术开发),大家知道,现在微信公众账号分服务号和订阅号,现在我要讲的主要是个人微信公众账号的建立以及后台的开发,个人公众 ...

  4. maven 控制台 打包

    maven打包方法1.打开cmd,进入到项目的根目录2.执行命令:mvn clean package等待结束.结束后到目录的target子目录中找jar文件即可

  5. Python爬虫&lpar;二&rpar;——对开封市58同城出租房数据进行分析

    出租房面积(area) 出租房价格(price) 对比信息 代码 import matplotlib as mpl import matplotlib.pyplot as plt import pan ...

  6. hive orc压缩数据异常java&period;lang&period;ClassCastException&colon; org&period;apache&period;hadoop&period;io&period;Text cannot be cast to org&period;apache&period;hadoop&period;hive&period;ql&period;io&period;orc&period;OrcSerde&dollar;OrcSerdeRow

    hive表在创建时候指定存储格式 STORED AS ORC tblproperties ('orc.compress'='SNAPPY'); 当insert数据到表时抛出异常 Caused by: ...

  7. 600字让你读懂Git

    设想你现在位于 alpha/ 目录下,这里有一个文本文件 number.txt,里面的内容只有一个词:“first”. 现在执行 git init 将这个 alpha 文件夹初始化为 Git 仓库. ...

  8. Kernel 4&period;9的BBR拥塞控制算法与锐速

    重要的事情说三遍! BBR并不能突破带宽限制!!! BBR并不能突破带宽限制!!! BBR并不能突破带宽限制!!! 它的功能如下: 1.在高丢包率与低速率的网络中提升传输效果,充分利用带宽. 2.降低 ...

  9. 【干货】国外程序员整理的 C&plus;&plus; 资源大全&lpar;转&rpar;

    转zi:http://www.csdn.net/article/2014-10-24/2822269-c++ 关于 C++ 框架.库和资源的一些汇总列表,由 fffaraz发起和维护. 内容包括:标准 ...

  10. Nginx 系统维护配置

    转自:http://blog.csdn.net/kkgbn/article/details/52153383 tomcat关闭后 请求返回502状态码 error_page /.html; locat ...