题意 link(more:129.,P1044) 简化题意:给定严格从 \(1\thicksim n\) 这 \(n(n\leqslant 6\times10^4)\) 个整数,规定每个数都要进出栈各一次,求所有可能的出栈序列的数量. 这题有多种做法(爆搜,递推,dp,数学),最主要是 \(n\) 的范围,刚好会把像递推和 dp 这样的 \(O(n^2)\) 的次优化算法卡掉. 显然复杂度就要求是线性的,如此,可以使用组合数学中的 卡特兰数Catalan(link). 理论推导 首先,我们以 \…
火车进站问题 卡特兰数引入的例子. 卡特兰数递推公式:h(n)=h(n-1)*(4*n-2)/(n+1) 通项公式:h(n)=c(2n,n)/(n+1)... 这题需要高精度,刚好学了一下java...第一次写的java好丑啊,还好1y了.. import java.math.*; import java.util.*; public class Main { public static BigInteger BI(int x) { return BigInteger.valueOf(x); }…
火车进出栈类问题详讲 & 卡特兰数应用 引题:火车进出栈问题 [题目大意] 给定 \(1\)~\(N\) 这\(N\)个整数和一个大小无限的栈,每个数都要进栈并出栈一次.如果进栈的顺序为 \(1,2,3,...,N\),那么可能的出栈序列有多少种? [关键词] 栈的思想 算法优化 卡特兰数 (Catalan number) [题解] \(\mathfrak{Chapter1}\) -- 暴力出奇迹 首先,从状态的角度出发思考,每一层解答树都有两个分支: 把下一个数进栈. 把当前栈顶的数出栈(如果…
描述 一列火车n节车厢,依次编号为1,2,3,-,n.每节车厢有两种运动方式,进栈与出栈,问n节车厢出栈的可能排列方式有多少种. 输入格式 一个数,n(n<=60000) 输出格式 一个数s表示n节车厢出栈的可能排列方式 样例输入1 3 样例输出1 5 样例输入2 50 样例输出2 1978261657756160653623774456 题解: ......,答案即为卡特兰数,可是窝的高精跑的太慢了QWQ(被python代码吊起来打),所以这并不是std. 这里有一种非常精妙的球卡特兰数的方法…
题意: 给出一个数字n,假设火车从1~n的顺序分别进站,求有多少种出站序列. 思路: 卡特兰数的经典例子.n<101,用递推式解决.需要使用到大数.n=100时大概有200位以下. #include <bits/stdc++.h> using namespace std; ; vector<string> vect; void _mult(string num1, string num2, string &result ) { reverse(num1.begin()…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1023 Train Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12035    Accepted Submission(s): 6422 Problem Description As we all know the…
火车进站出站的问题满足卡特兰数...卡特兰数的相关知识如下: 卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 前几项为 (OEIS中的数列A000108): 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 176…
题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能.    (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670- 令h(0)=1,h(1)=1,catalan数满足递推式:      h(n)= h(0…
Robot Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Description There is a robot on the origin point of an axis.Every second, the robot can move right one unit length or do nothing.If the robot is on the…
推荐:卡特兰数总结 定义: f(i)表示,从(0,0)出发,到(i,i),每次只能向上或者向右走,并且不越过红线的方案数. 这个图片的点上的数字,其实告诉我们f[i],就可以根据这个n方dp得到. 其实是由这个阶梯推过来的. 也是之后的经典模型 公式: 来自百度百科 定义式: 为什么是对的?考虑第一次走到(y=x)的情况大概图长这样:中间空出一行为了强制必须向上走 这个式子是n^2的,太low了. h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...) 这个式子推法: 从A到目标…