• 2017 ccpc 秦皇岛站 B题 Expected Waiting Time (zoj3982)


    题目链接:

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3982

    我们要求的就是x * y-1 % P

    y = catalan( n ) % P

    主要说说x怎么求:

    对于一个长度为2n的序列,如果我们在这2n个数前面选择n个放+,n个放-,并且+-号的放置方式满足卡特兰序列,即满足所有前缀的+号个数 >= -号个数,我们记放置符号后的2n个数的和为S。

    这x = catalan(n)种放置方式的S的和。

    我们可以转化为对2n个位置求贡献。

    对于第i个位置a[i],前面为+的方案数为f(i),则前面为-的方案数为catalan(n) - f(i),

    对x的贡献:f(i) * a[i] - (catalan(n) - f(i)) * a[i]

    问题是f(i)不会求,到stackoverflow上面也没有查到。

    那就把+-号改为()括号,每次算的是2个位置组成一对的贡献a[r] - a[l]。

    枚举长度len,再枚举(括号位置l,则r = l + len - 1,然后推推x的公式,

    发现不用枚举l了,因为变成了前缀和。

    所以x的公式就是枚举长度O(n)的复杂度了。

  • 相关阅读:
    vuex插件
    axios
    token登录验证
    mysql模糊查询
    Koa2+Mysql搭建简易博客
    正则匹配器
    编码
    Maven学习
    防止重复提交保证幂等的几种解决方案
    策略模式优化if-else
  • 原文地址:https://www.cnblogs.com/-maybe/p/7768631.html
Copyright © 2020-2023  润新知