bzoj 2822 [AHOI2012]树屋阶梯 卡特兰数
因为规定n层的阶梯只能用n块木板 
那么就需要考虑,多出来的一块木板往哪里放 
考虑往直角处放置新的木板 
不管怎样,只有多的木板一直扩展到斜边表面,才会是合法的新状态,发现,这样之后,整个n层阶梯就被分成了i层和n-1-i层的阶梯,即
就是卡特兰数!!!,需要高精。。差评。。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define N 1050
using namespace std;
int n,prime[N],tot,id[N],num[N];
bool bo[N];
struct bignum{
    int len,a[500];
    bignum(){len=0;memset(a,0,sizeof a);}
    bignum operator = (int x){
        while(x){
            a[++len]=x%10;
            x/=10;
        }
        return *this;
    }
    bignum operator * (int x){
        bignum b; b.len=len;
        for(int i=1;i<=len;i++)
        {
            b.a[i]+=a[i]*x;
            b.a[i+1]+=b.a[i]/10;
            b.a[i]%=10;
        }
        while(b.a[b.len+1]){
            b.len++;
            b.a[b.len+1]=b.a[b.len]/10;
            b.a[b.len]%=10;
        }
        return b;
    }
}ans;
void print(bignum b){
    for(int i=b.len;i;i--){
        printf("%d",b.a[i]);
    }printf("\n");
}
void getprime(){
    for(int i=2;i<=2*n;i++){
        if(!bo[i]){
            prime[++tot]=i;
            id[i]=tot;
        }
        for(int j=1;j<=tot&&i*prime[j]<=2*n;j++){
            bo[i*prime[j]]=1;
            id[i*prime[j]]=j;
            if(i%prime[j]==0)break;
        }
    }
}
void add(int x,int y){
    while(x!=1){
        num[id[x]]+=y;
        x/=prime[id[x]];
    }
}
int main(){
    scanf("%d",&n);
    getprime();
    for(int i=n+2;i<=2*n;i++)add(i,1);
    for(int i=1;i<=n;i++)add(i,-1);
    ans=1;
    for(int i=1;i<=tot;i++)
        while(num[i]--) ans=ans*prime[i];
    print(ans);
    return 0;
}bzoj 2822 [AHOI2012]树屋阶梯 卡特兰数的更多相关文章
- BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]
		2822: [AHOI2012]树屋阶梯 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 779 Solved: 453[Submit][Status] ... 
- bzoj2822[AHOI2012]树屋阶梯(卡特兰数)
		2822: [AHOI2012]树屋阶梯 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 879 Solved: 513[Submit][Status] ... 
- 【BZOJ 2822】[AHOI2012]树屋阶梯 卡特兰数+高精
		这道题随便弄几个数就发现是卡特兰数然而为什么是呢? 我们发现我们在增加一列时,如果这一个东西(那一列)他就一格,那么就是上一次的方案数,并没有任何改变,他占满了也是,然后他要是占两格呢,就是把原来的切 ... 
- BZOJ2822[AHOI2012]树屋阶梯——卡特兰数+高精度
		题目描述 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题.由于地上露营湿气重,必须选择在高处的树屋露营.小龙分配的树屋建立在一颗高度为N+1尺(N为 ... 
- BZOJ2822:[AHOI2012]树屋阶梯(卡特兰数,高精度)
		Description 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题.由于地上露营湿气重,必须选择在高处的树屋露营.小龙分配的树屋建立在一颗高度为 ... 
- [bzoj2822][AHOI2012]树屋阶梯 (卡特兰数+分解质因数+高精度)
		Description 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题.由于地上露营湿气重,必须选择在高处的树屋露营.小龙分配的树屋建立在一颗高度为 ... 
- bzoj3907 网格 & bzoj2822 [AHOI2012]树屋阶梯——卡特兰数+高精度
		题目:bzoj3907:https://www.lydsy.com/JudgeOnline/problem.php?id=3907 bzoj2822:https://www.lydsy.com/Jud ... 
- P2532 [AHOI2012]树屋阶梯 卡特兰数
		这个题是一个卡特兰数的裸题,为什么呢?因为可以通过划分来导出递推式从而判断是卡特兰数,然后直接上公式就行了.卡特兰数的公式见链接. https://www.luogu.org/problemnew/s ... 
- Luogu P2532 [AHOI2012]树屋阶梯 卡特兰数
		接着压位OvO... 我不会告诉你答案就是卡特兰数... 为什么呢? 首先,$ans[0]=1,ans[1]=1,ans[2]=2$ 对于$ans[3]$,我们可以发现他是这样来的: $ans[3]= ... 
随机推荐
- Django处理流程
			用户通过浏览器发送请求 请求到达request中间件,中间件对request请求做预处理或者直接返回response 若未返回response,会到达urlconf路由,找到对应视图函数 视图函数做相 ... 
- .net 模糊匹配路径
			string[] fileNames = Directory.GetFiles("D:/", "*1.txt"); // 路径,模糊文件名 : 返回符合的文件名 ... 
- 以太坊智能合约虚拟机(EVM)原理与实现
			以太坊 EVM原理与实现 以太坊底层通过EVM模块支持合约的执行与调用,调用时根据合约地址获取到代码,生成环境后载入到EVM中运行.通常智能合约的开发流程是用solidlity编写逻辑代码,再通过编译 ... 
- Python教程大纲
			缘起:最近想在部门推Python语言,写这个blog主要就是个教程大纲,之前先列出一些资源:Python历史:http://www.docin.com/p-53019548.html ... 
- 数据库中row_number()、rank()、dense_rank() 的区别
			row_number的用途非常广泛,排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号. ... 
- Interesting卡常数
			C++ Interesting卡常数 作为一名OIer,在Noip中卡(kǎ 我就爱读kǎ)常数可以说是必备技巧.在此总结一下我所知卡常数的神奇手法: IO优化 fread 和 fwrite ,如果还 ... 
- ScalaPB(2): 在scala中用gRPC实现微服务
			gRPC是google开源提供的一个RPC软件框架,它的特点是极大简化了传统RPC的开发流程和代码量,使用户可以免除许多陷阱并聚焦于实际应用逻辑中.作为一种google的最新RPC解决方案,gRPC具 ... 
- HTML 学习笔记 day three
			HTML学习笔记 Day three 7.2插入多媒体元素 插入音乐 语法结构:<embed src=”音乐文件的路径”></embed> 属性: Autostart:他只有 ... 
- Urlparse模块
			urlparse模块主要是把url拆分为6部分,并返回元组.并且可以把拆分后的部分再组成一个url.主要有函数有urljoin.urlsplit.urlunsplit.urlparse等. urlpa ... 
- js实现地图打印功能
			注意:js对地图的打印功能在arcgis10.1中才有提供,所以如果要使用esri自带的地图打印功能,必须使用arcgis 10.1或更高版本的地图打印模板.(由于官网和arcgis desktop提 ... 
