这玩意不是卡特兰的经典模型吗……

我们设方案数为f(i),则f(0)=1,f(1)=1,f(2)=2,f(3)=5,(其实到这里你再手模一个就出来了)我们把左上角的矩形删掉,则会变成下方和右方两个更小规模的问题(如果没有就是f(0)喽),拿样例举例f(3)=f(2)的一种情况*f(0)+f(2)的另一种情况*f(0)+f(1)*f(1)+f(0)*f(2)的一种情况+f(0)*f(2)的另一种情况,总结一下,f(3)=$∑_{i=0}^{2}f(i)*f(2-i)$,对所有情况进行归纳,则得到Cat数O(n^2)的那个递归的式子。

至于算的时候,直接O(n)唯一分解接高精就搞定了,(至于你不懂什么叫O(n)唯一分解,你可以去看代码或上一篇博客)。

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
#include<stack>
#include<set>
#include<map>
using namespace std;
int n,prime[],prime_num;
bool v[];
struct Bigint{
int a[],len;
void clear(){
memset(a,,sizeof(a));
len=;
a[]=;
}
friend void operator *(Bigint &x,int y){
int delta=;
for(int i=;i<=x.len;i++){
x.a[i]=x.a[i]*y+delta;
delta=x.a[i]/;
x.a[i]%=;
}
while(delta>){
x.a[++x.len]=delta%;
delta/=;
}
while(x.a[x.len]==&&x.len>)
--x.len;
}
void out(){
for(int i=len;i>=;i--)
printf("%d",a[i]);
}
}ans;
void doprime(int x){
for(int i=;i<=x;i++){
if(!v[i]) prime[++prime_num]=i;
for(int j=;j<=prime_num&&i*prime[j]<=x;j++){
v[i*prime[j]]=;
if(i%prime[j]==) break;
}
}
}
int main(){
scanf("%d",&n);
doprime(*n+);ans.clear();
for(int i=;i<=prime_num;i++){
long long s=;
for(int j=*n;j/=prime[i];) s+=j;
for(int j=n;j/=prime[i];) s-=j;
for(int j=n+;j/=prime[i];) s-=j;
for(int j=;j<=s;j++)
ans*prime[i];
}
ans.out();
return ;
}

至此Cat三题吸收完毕。

最新文章

  1. [MySQL Reference Manual] 23 Performance Schema结构
  2. go 数据类型转换
  3. css 强制 中文、英文 换行
  4. coderforces #384 D Chloe and pleasant prizes(DP)
  5. ggplot2 上篇
  6. Groovy安装与入门实例
  7. Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
  8. 2014年11月17号------html起始
  9. 发布一款仿天猫产品放大镜JQuery插件
  10. VPN拨号后使用本地网络上网
  11. MySQL的表分区(转载)
  12. eclipse自动提示类型的作用
  13. Minor GC、Major GC和Full GC之间的区别
  14. Luogu4494 [HAOI2018]反色游戏 【割顶】
  15. 对MSF八个原则的思考
  16. GitHub Desktop的简单使用
  17. windows假装更新升级
  18. web-day2
  19. AngularJS 单元测试 Karma jasmine
  20. AngulerJS学习(五)按需动态载入文件

热门文章

  1. iOS - The file “XXX.app” couldn’t be opened because you don’t have permission to view it.
  2. day01-02
  3. 【实战】Apache shiro&lt;=1.2.4 getshell
  4. 改变说明文档显示位置wrap
  5. 【Zookeeper】基础学习概览【汇总】
  6. 四、DDL常见操作汇总
  7. drf-过滤组件|分页组件|过滤器
  8. 关于MQ的几件小事(一)消息队列的用途、优缺点、技术选型
  9. JVM系列一:虚拟机内存区域
  10. 从Retrofit的源码来看 HTTP