博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 2111 Perm 排列计数(满二叉树)
阅读量:5865 次
发布时间:2019-06-19

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

题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2111

题意:求1到n有多少种排列满足:A[i]>A[i/2](2<=i<=n)。

思路:形式类似二叉树。建模之后其实就是n个节点的不同的满二叉树有多少种?用f[i]表示i个节点的满二叉树个数,则f[n]=f[L]*f[R]*C(n-1,L)。其中L和R对于确定的n来说是确定的。比如n=10时,左右子树分别有6、3个点。

 

i64 a[N],n,p,f[N];void init(){    int i;    a[0]=1;    FOR1(i,N-1) a[i]=a[i-1]*i%p;}i64 exGcd(i64 a,i64 b,i64 &x,i64 &y){    if(b==0)    {        x=1;        y=0;        return a;    }    i64 temp=exGcd(b,a%b,x,y);    i64 t=x;    x=y;    y=t-a/b*y;    return temp;}i64 reverse(i64 a){    i64 x,y;    exGcd(a,p,x,y);    x=(x%p+p)%p;    return x;}i64 C(i64 n,i64 m){    return a[n]*reverse(a[m]*a[n-m]%p)%p;}int get(int x){    if(x==1) return 1;    int i;    for(i=1;;i++)    {        x-=(1<

 

 

 

转载地址:http://xbynx.baihongyu.com/

你可能感兴趣的文章
Haproxy+Keepalived负载均衡
查看>>
Spark入门到精通视频学习资料--第六章:Machine Learning on Spark(1讲)
查看>>
Android 旋转字体 实现(应用角标,如:新,火等关键字)
查看>>
Android抽象布局——include、merge 、ViewStub
查看>>
2.5. mysqlcheck — A Table Maintenance and Repair Program
查看>>
openMP多线程编程
查看>>
173.2. Redmine 运行
查看>>
【★】SPF(Dijkstra)算法完美教程
查看>>
CentOS下配置SFTP操作日志
查看>>
SQL Server之游标的基础知识
查看>>
微信应用号截图曝光?
查看>>
macbook pro 一些操作经验记录
查看>>
远程桌面不能交互复制粘贴
查看>>
OpenStack 通用设计思路 - 每天5分钟玩转 OpenStack(25)
查看>>
11g Dataguard中的snapshot standby特性
查看>>
博客园(cnblogs)右侧添加悬浮打赏功能
查看>>
D项目轶事之Kick-off
查看>>
MathType输入矩阵或者向量的注意事项
查看>>
SAP MM 设置某个物料类型物料基本数据1视图中的‘Old material number’字段必须输入...
查看>>
10g,11g中数据库静默安装中的细小差别
查看>>