博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[ZJOI2010]排列计数
阅读量:6002 次
发布时间:2019-06-20

本文共 1644 字,大约阅读时间需要 5 分钟。

求由\(1-n\)组成的数列\(\{a_i\}\)中,满足\(a_i>a_{i/2}(i\neq 1)\)的数列方案数\(mod\ p\)\(1 ≤n ≤ 10^6, p≤ 10^9\)

显然此为完全二叉树压维模型,即父节点点权\(a_i\)的子节点点权为\(a_{i/2},a_{i/2+1}\),满足\(a_i<a_{i/2},a_i<_{i/2+1}\)

法一:

于是要在二叉树下下功夫,显然不能以序列长度为状态,考虑二叉树通常的子树递推转移,于是设\(f[i]\)表示以节点i为根节点的满足条件的二叉树方案数,显然我们的知道i的左右子树的节点数,而这显然是可以暴力维护的,画张图,按照规律来即可。

设其左子树节点个数l,右子树节点个数r,于是我们有

\[f[i]=f[2i]f[2i+1]\frac{(l+r)!}{l!}=f[2i][2i+1]C_{l+r}^l\]

边界把二叉树最后一层节点都初始化为1即可。

参考代码:

暂缺

法二:

\(f[i]\)表示有i个节点的二叉树的满足条件的方案数,显然根节点的左右节点的个数l,r可以暴力预处理,于是有

\[f[i]=f[l]f[r]C_{i-1}^l\]

边界:\(f[1]=1\)

参考代码:

#include 
#include
#define il inline#define ri register#define ll long longusing namespace std;int l[2000001],r[2000001], dp[1000001],jc[1000001], jv[1000001],yyb;il void prepare(int);il int C(int,int),pow(int,int);int main(){ int n,i,j; scanf("%d%intd",&n,&yyb); for(i=2,prepare(n);(1<
<=n;++i){ int head,mid,tail; head=1<
<
>1; for(j=head;j<=mid;++j) l[j]=l[j-1]+1,r[j]=r[j-1]; for(j=mid+1;j<=tail;++j) l[j]=l[j-1],r[j]=r[j-1]+1; }dp[1]=dp[0]=1; for(i=2;i<=n;++i) dp[i]=(ll)dp[l[i]]*dp[r[i]]%yyb*C(i-1,l[i])%yyb; printf("%d",dp[n]); return 0;}il int pow(int x,int y){ int ans(1); while(y){ if(y&1)ans=(ll)ans*x%yyb; x=(ll)x*x%yyb,y>>=1; }return ans;}il void prepare(int n){ int i; for(i=jc[0]=1;i<=n;++i) jc[i]=(ll)jc[i-1]*i%yyb; --i,jv[i]=pow(jc[i],yyb-2),jv[0]=1; while(i>1)jv[i-1]=(ll)jv[i]*i%yyb,--i;}il int C(int n,int r){ if(n

转载于:https://www.cnblogs.com/a1b3c7d9/p/10861841.html

你可能感兴趣的文章
为什么要用java重写logstash
查看>>
Dart基础-类
查看>>
Git远程02:git clone都做了什么
查看>>
BSD vi/vim 命令大全(下)[转]
查看>>
SQL Server 2008开启sa用户名和远程连接
查看>>
css3中变形与动画(一)
查看>>
Linux 系统查看命令
查看>>
Spring中我们用到的功能实现:基于注解的Ioc自动装配
查看>>
mac book新手入门-快捷键
查看>>
蚂蚁金服安全产品技术资深总监冯春培:用生态的力量解决安全生态的问题
查看>>
SQLite的使用二
查看>>
log4net的配置与使用
查看>>
C# 视频监控系列(2):客户端——封装API
查看>>
angularjs $apply 数据绑定
查看>>
IOS Core Image之二
查看>>
[XMove-自主设计的体感解决方案] 系统综述
查看>>
设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
查看>>
【LINUX学习】磁盘分割之建立primary和logical 分区
查看>>
【YUM】第三方yum源rpmforge
查看>>
Qt之模型/视图(自定义进度条)
查看>>