【BZOJ 2822】[AHOI2012]树屋阶梯 卡特兰数+高精
这道题随便弄几个数就发现是卡特兰数然而为什么是呢?
我们发现我们在增加一列时,如果这一个东西(那一列)他就一格,那么就是上一次的方案数,并没有任何改变,他占满了也是,然后他要是占两格呢,就是把原来的切成了n-2,和1,要是就剩一格呢,也是把原来的切成一格和n-2,因为如果一行的某一列被堵了那么这一行的开头的那个台阶表面就覆盖不到那一列.....
这个是从数学角度,由于递推公式的相似性所以是卡特兰数.......
#include <cstdio>
const int STD=;
struct Bigint{
int a[];
inline friend Bigint operator * (Bigint A,int B);
inline void operator *= (int B){
*this=(*this)*B;
}
inline void print(){
printf("%d",a[a[]]);
for(int i=a[]-;i>;i--)
printf("%04d",a[i]);
}
}ans;
inline Bigint operator * (Bigint A,int B){
int x=;
for(int i=;i<=A.a[];i++){
A.a[i]=A.a[i]*B+x;
x=A.a[i]/STD;
A.a[i]%=STD;
}
if(x)A.a[++A.a[]]=x;
return A;
}
const int N=;
int prime[N],len,size[N],MMin[N];
bool isnot[N];
inline void get_prime(){
for(int i=;i<N;i++){
if(!isnot[i]){
prime[++len]=i;
MMin[i]=len;
}
for(int j=;j<=len&&prime[j]*i<N;j++){
isnot[prime[j]*i]=;
MMin[prime[j]*i]=j;
if(i%prime[j]==){
break;
}
}
}
}
inline void get_(int x,int d){
while(x!=){
size[MMin[x]]+=d;
x/=prime[MMin[x]];
}
}
int main(){
get_prime();
int n;
ans.a[]=ans.a[]=;
scanf("%d",&n);
for(int i=n<<;i>n+;i--)
get_(i,);
for(int i=;i<=n;i++)
get_(i,-);
for(int i=;i<=len;i++){
while(size[i])
ans*=prime[i],size[i]--;
}
ans.print();
return ;
}
【BZOJ 2822】[AHOI2012]树屋阶梯 卡特兰数+高精的更多相关文章
- bzoj 2822 [AHOI2012]树屋阶梯 卡特兰数
因为规定n层的阶梯只能用n块木板 那么就需要考虑,多出来的一块木板往哪里放 考虑往直角处放置新的木板 不管怎样,只有多的木板一直扩展到斜边表面,才会是合法的新状态,发现,这样之后,整个n层阶梯就被分成 ...
- 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] ...
- BZOJ2822[AHOI2012]树屋阶梯——卡特兰数+高精度
题目描述 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题.由于地上露营湿气重,必须选择在高处的树屋露营.小龙分配的树屋建立在一颗高度为N+1尺(N为 ...
- BZOJ2822:[AHOI2012]树屋阶梯(卡特兰数,高精度)
Description 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题.由于地上露营湿气重,必须选择在高处的树屋露营.小龙分配的树屋建立在一颗高度为 ...
- [bzoj2822][AHOI2012]树屋阶梯 (卡特兰数+分解质因数+高精度)
Description 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题.由于地上露营湿气重,必须选择在高处的树屋露营.小龙分配的树屋建立在一颗高度为 ...
- BZOJ 2822: [AHOI2012]树屋阶梯
Description 求拼成阶梯状的方案数. Sol 高精度+Catalan数. 我们可以把最后一行无线延伸,所有就很容易看出Catalan数了. \(f_n=f_0f_{n-1}+f_1f_{n- ...
- P2532 [AHOI2012]树屋阶梯 卡特兰数
这个题是一个卡特兰数的裸题,为什么呢?因为可以通过划分来导出递推式从而判断是卡特兰数,然后直接上公式就行了.卡特兰数的公式见链接. https://www.luogu.org/problemnew/s ...
- bzoj3907 网格 & bzoj2822 [AHOI2012]树屋阶梯——卡特兰数+高精度
题目:bzoj3907:https://www.lydsy.com/JudgeOnline/problem.php?id=3907 bzoj2822:https://www.lydsy.com/Jud ...
随机推荐
- php将html页面截图并保存成图片
采用html5的canvas,将图片绘制到画布上,然后用canvas的 toDataURL 方法. 但是在图片转base64的过程中遇到了两个问题, 1:图片无法绘制,转成的base64 用浏览器打开 ...
- YII2.0 用GII创建视图文件后访问404
使用GII的CRUD Generator创建searchModelClass 和控制器类文件,视图文件后,访问控制器地址后出现404的情况. 创建过程如图所示 后来发现是控制器类 Controller ...
- react项目中引入百度地图打包报错问题
一.我正常引入百度地图,调试时候是好使的,但是打包时候就报错 引入方法如下: 报错如图 正常调试是好使的,但是打包报这个错,解析不了这个BMap,那么怎么办呢? 然后我就转用了window办法,虽然因 ...
- ReentrantLock类的hasQueuedPredecessors方法和head节点的含义
部分启发来源自文章:Java并发编程--Lock PART 1 1.如果h==t成立,h和t均为null或是同一个具体的节点,无后继节点,返回false.2.如果h!=t成立,head.next是否为 ...
- 实用脚本 4 -- Makefile(不同文件下的多个可执行文件or静态库编译到同一目录下)
不同文件下的多个可执行文件编译到同一目录下,这样方便观察编译结果,从而方便进程操作.使用时根据自己的需要在进行局部修改(如 链接库.目标文件等等). 1..bashrc 中设置编译主目录(例如) ex ...
- Objective-C反射机制
oc反射机制有三个用途: 1.获得Class Class LoginViewController = NSClassFromString(@"LoginViewController" ...
- 步骤:asp.net core中使用identifyserver4颁发令牌
使用IdentityServer4颁发令牌基本步骤如下: 在 Startup.Configure 方法调用 app.UseIdentityServer ,添加IdentityServer4到应用的 H ...
- MD5、SHA校验命令
linux系统的软件很多时候都以境像的方式提供下载,但我们如何确实下载的文件是没有被篡改过的呢?Linux中一般用对下载的文件进行MD5和SHA校验来确认. MD5 我们拿iptraf软件来试验: 我 ...
- Kotlin 1 函数
#2 函数 函数声明和平时我见到的有点不太一样,使用关键字fun来声明.(感觉好欢乐的样子···O(∩_∩)O~~) 下面的示例,简单的声明了一个函数: // 这是函数声明 fun this_is_a ...
- Python request 简单使用
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...