P2532 [AHOI2012]树屋阶梯(Catalan数&高精度)

题目传送门

思路:卡特兰数的变形,可根据包含直角点的矩形覆盖的阶梯点的位置进行加法原理,然后对每个情况进行乘法原理,可以得到卡特兰数的递推式的形式。

根据左上角阶梯的方案数 × \times ×右下角阶梯形的方案数 = = =该情况方案数
由上图可知:图1为 h ( 0 ) × h ( 3 ) h(0)\times h(3) h(0)×h(3),图2为 h ( 1 ) × h ( 2 ) h(1)\times h(2) h(1)×h(2),图3为 h ( 2 ) × h ( 1 ) … h(2)\times h(1)\dots h(2)×h(1)…后面的图依次类推。

得到: h ( 4 ) = h ( 0 ) × h ( 3 ) + h ( 1 ) × h ( 2 ) + h ( 2 ) × h ( 1 ) + h ( 3 ) × h ( 0 ) h(4)=h(0)\times h(3)+h(1)\times h(2)+h(2)\times h(1)+h(3)\times h(0) h(4)=h(0)×h(3)+h(1)×h(2)+h(2)×h(1)+h(3)×h(0) 为 C a t a l a n Catalan Catalan递推式。

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e4+5;
struct num{int a[N],l;
}ans;
int n;
void multi(num &b,int x){  //高精 乘 低精 int p=0;for(int i=1;i<=b.l;i++){b.a[i]=b.a[i]*x+p;p=b.a[i]/10;b.a[i]%=10;}while(p){b.a[++b.l]=p;p/=10;b.a[b.l]%=10;}
}
void div(num &b,int x){ //高精 除 低精 int p=0;for(int i=b.l;i>=1;i--){p=p*10+b.a[i];b.a[i]=p/x;p%=x;}while(!b.a[b.l]) b.l--;
}
int main(){scanf("%d",&n);ans.a[1]=ans.l=1;for(int i=2;i<=n;i++) multi(ans,i+n);for(int i=2;i<=n;i++) div(ans,i);for(int i=ans.l;i>=1;i--)printf("%d",ans.a[i]);return 0;
}

P2532 [AHOI2012]树屋阶梯($Catalan$数高精度)相关推荐

  1. P2532 [AHOI2012]树屋阶梯

    P2532 [AHOI2012]树屋阶梯 提交4.66k 通过1.79k 时间限制1.00s 内存限制125.00MB 提交答案加入题单 复制题目 题目提供者clearman 难度提高+/省选- 历史 ...

  2. BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]

    2822: [AHOI2012]树屋阶梯 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 779  Solved: 453 [Submit][Statu ...

  3. BZOJ2822 [AHOI2012]树屋阶梯

    求卡特兰数,h[i]=C(2n,n)/(n+1) 1 #include<bits/stdc++.h> 2 using namespace std; 3 int v[1005],p[1005 ...

  4. [Catalan数三连]网格有趣的数列树屋阶梯

    如何让孩子爱上打表 Catalan数 Catalan数是组合数学中一个常出现在各种计数问题中的数列. 以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名. 先丢个公式(设第n项为$ ...

  5. POJ 2084 Catalan数+高精度

    POJ 2084 /***************************************** author : Grant Yuan* time : 2014/10/19 15:42* so ...

  6. 洛谷oj P1045麦森数 高精度快速幂取模及位数求法

    题目链接:戳我戳我 我们知道,  的最后一位必定不是0, 则  的位数与  相等. 那么如何来求  的位数呢? 为了不失一般性, 在此直接讨论任意数  的位数: 对于任意大于等于0的实数k, 有  的 ...

  7. bzoj2822 [AHOI2012]树屋阶梯 dp

    容易得到一个结论:每一个块必须卡住一个角,不然一定是无法覆盖全的(一个矩形只能覆盖一个角) 所以就枚举多出来的矩形覆盖哪个角,剩下的方案数用以前算过的,类似插数dp 注:这个题竟然丧病的卡常,高精用的 ...

  8. [杂谈] 14. Catalan卡特兰数

    文章目录 1. 前言 2. 卡特兰数递推公式推导 3. 卡特兰数性质 4. 卡特兰数简单实例 实例1:进出栈问题 实例2:进出栈问题变种 实例三:电影购票问题 实例四:上班路径问题 实例五:乘法结合律 ...

  9. 2019.4.summary

    2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...

最新文章

  1. DSGN:基于深度立体几何网络的3D目标检测(香港大学提出)
  2. 与smart_Smart超纯水系统及原理
  3. filter 在CSS用的效果
  4. vs如何设置对话框显示在最前面_“打开”对话框的使用
  5. Atmosphere 1.0:支持Java/JavaScript的异步通信框架
  6. linux下运行python_在Linux命令行终端中使用python的简单方法(推荐)
  7. WordPress 插件开发实例 – 详细注释的 Widget 开发例子
  8. BZOJ1876 SDOI2009 SuperGCD 其他
  9. R2: 已解释和未解释的方差
  10. magento smtp设置
  11. Emacs镜像ELPA
  12. 网站文件系统发展分布式文件系统fastDFS
  13. iphone-common-codes-ccteam源代码 CCCompile.h
  14. Activity启动模式singleTask的理解
  15. java 发送封包_【Java学习笔记】自动封包和解包(Autoboxing和AutoUnboxing)
  16. 祝贺光环2014年6月28日PMP考试通过率90.28%
  17. 从HDMI到MHL,手机走进高清时代
  18. 十月上旬百度 阿里巴巴 迅雷搜狗最新面试七十题 第201 270题
  19. python print end参数_python print的参数详解
  20. keil软件仿真时如何使用逻辑分析仪查看波形

热门文章

  1. Java实习生在工作中需要学一些什么技能
  2. Vue+ElementUI实现两级、可动态扩展表头的表格
  3. 证件照有哪些拍摄技巧?证件照怎么拍才好看?记得收藏
  4. Go Slice学习
  5. [模板总结] - 快速选择 (霍尔Quick Selection)
  6. 计算机一级wps模拟软件,2017计算机一级WPS仿真练习题及答案
  7. 城南170万高性价比叠拼,上车机会不多了!
  8. Google App Inventor下载地址
  9. App Inventor 的坑
  10. PHP消息队列常见场景