题解 P1754 【球迷购票问题】

SIGSEGV

2018-05-25 18:03:50

Solution

Catalan number(卡塔兰数) 至于为什么是卡塔兰数的,各位dalao已经有解释了 蒟蒻就只说一下卡塔兰数的公式: f[n] = ∑(i=0 to n-1)f[i]*f[n-1-i] f[n] = f[n-1]*(4n-2)/(n+1) f[n] = C(n,2n)/(n+1) f[n] = C(n,2n) - C(n-1,2n) 蒟蒻用的第二种: ```cpp #include <bits/stdc++.h> using namespace std; int n;unsigned long long catalan[30]; unsigned long long calc(int n) { if (n == 1) return 1; if (catalan[n]) return catalan[n]; catalan[n] = calc(n - 1) * (4 * n - 2) / (n + 1); return catalan[n]; } int main () { cin >> n; cout << calc(n); return 0; } ```