zoukankan      html  css  js  c++  java
  • FJOI2016 建筑师

    FJOI2016 建筑师 [* easy]

    给定 (n,A,B) 求有多少个长度为 (n) 的排列满足从左看单调栈大小为 (A),从右看为 (B)

    多次查询。

    (nle 5cdot 10^4,Tle 2cdot 10^5,A,Ble 100)

    Solution

    (mathcal O(Tn+n^2)) 的容易的,考虑枚举最大值位于 (i) 处,那么前面就是 (i-1) 的序列 (A) 个段的方案数,后面就是 (n-i) 的序列 (B) 个段的方案数。(给 (A,B) 先分别减 (1)

    然后序列计数可以直接 dp,不难注意到答案就是第一类斯特林数,这是因为可以考虑将元素分组,那么最大值显然在最开头(相当于强行规定了顺序,但其余任意排),然后将最大值从小到大排序可以认为是无序,即将 (i) 个元素分成 (A) 个圆排列的方案数。

    所以不难注意到答案为:

    [sum inom{n-1}{i-1}egin{bmatrix}i-1\Aend{bmatrix} egin{bmatrix}n-i\Bend{bmatrix} ]

    方便起见,(ileftarrow i-1,nleftarrow n-1),答案即:

    [sum inom{n}{i}egin{bmatrix}i\Aend{bmatrix} egin{bmatrix}n-i\Bend{bmatrix} ]

    不难发现等价于 (inom{A+B}{A}egin{bmatrix}n\A+Bend{bmatrix}),即将 (n) 个元素分成 (A+B) 个圆排列,再从其中 (A+B) 选出 (A) 个圆排列分给第一组的方案数。

    于是复杂度 (mathcal O(nA+T))

  • 相关阅读:
    js 生成随机数
    解决微信浏览器无法使用reload()刷新页面
    js 去除左右空格
    小程序开发入门-第一天
    我的第一个JSP——动态web
    2019-3-6 复制粘贴
    2019-2-19 异常练习
    2019-1-19 object祖宗类的equals重写
    2019-1-15 课堂笔记
    2019-1-15 课后作业
  • 原文地址:https://www.cnblogs.com/Soulist/p/13854770.html
Copyright © 2011-2022 走看看