zoukankan      html  css  js  c++  java
  • uoj424 count

    uoj424 count

    http://uoj.ac/problem/424

    Sol1:

    建出序列的笛卡尔树,问题转换成有多少非同构(n)个点的笛卡尔树,满足向左走的链长小于等于(m)

    列出递推式(f(i, j) = sum_{k < i} f(k, j - 1) imes f(i - k - 1, j))

    (F_j(x) = sum_{i} f(i, j)x^i)

    (F_j(x) = F_j(x) xF_{j-1}(x) + 1 ightarrow F_j(x) = frac{1}{1-xF_{j-1}(x)})

    接下来就是一个套路记(F_j(x) = frac{A_j(x)} {B_j(x)}),可以推出(A_j(x) = B_{j-1}(x),B_j(x) =B_{j-1}(x) - xcdot A_{j-1}(x))

    (n)个单位根带入后IDFT求逆可以求出(F_j(x))

    Sol2:

    用括号序列表示这颗笛卡尔树,问题转换成有多少长度为(2n)的括号序列,满足任意前缀左括号-右括号<=m

    相当于从((0,0))开始走,不能碰到(y_1 = -1, y_2 = m + 1)

    我们利用容斥,只需要计算经过(y_1 ightarrow y_2 ightarrow y_1 cdots ightarrow y_1)的方案数。

    这是一个经典的问题,利用折线法。

    比如我们计算经过(y_0=-1)的方案数,我们考虑路径第一次与(y_0)的交,之后的行走方式就沿着(y_0)翻转,这样到达的终点就是((2n, -2))而不是((2n, 0)),此时右括号的数量是(n+1),所以答案就是(inom {2n} {n + 1})

    上面只需要做多次反射就好了,其实这是一个广义卡特兰数。

  • 相关阅读:
    【HTML】使用css3和html给网站添加上春节灯笼特效
    【CSS】学习笔记2 字体设置
    【CSS】学习笔记3 段落设置
    【CSS】学习笔记1 使用CSS样式表
    正则
    图片懒加载
    uni-app-组件
    uni-app-condition(条件)启动模式
    uni-app-页面
    uni-app项目目录和开发规范
  • 原文地址:https://www.cnblogs.com/foreverpiano/p/10505726.html
Copyright © 2011-2022 走看看