zoukankan      html  css  js  c++  java
  • LOJ6300 博弈论与概率统计 组合、莫队

    传送门


    如果在(0)以下之后仍然会减分,那么最后的结果一定是(N-M)

    注意到如果在Alice分数为(0)时继续输,那么就相当于减少了一次输的次数。也就是说如果说在总的博弈过程中,Alice在分数等于(0)时输了(x)次,那么最后的结果就是(N-M+x)

    不妨考虑一个序列(a_i),如果(a_i = 1)表示Alice第(i)局输了,(a_i = -1)表示第(i)局赢了,那么不难发现(x =)序列(a_i)的最大前缀和。不妨设(max_a)表示序列(a)的最大前缀和。然后可以发现序列(a_i)与格路问题有一些相似:从((0,0))开始走路,如果(a_i = 1)则第(i)步向上走一格,否则向右走一格,那么一个满足条件的序列(a)是一个从((0,0))((N,M))的路径,而(max_a)等于这条路径上所有的点中(y-x)的最大值。

    对于一组询问,我们要求的就是(Ans = sumlimits_{t} max_t),当(N > M)(Ans = sumlimits_{i=1}^M sumlimits_{t} [max_t geq i]),当(N leq M)(Ans = M - N + sumlimits_{i = M - N + 1} ^ M sumlimits_{t} [max_t geq i])

    对于(i in [max(M - N , 0) + 1 , M])(sumlimits_t [max_t geq i])相当于从((0,0))((N,M))必须经过(y = x + i)的路径条数,这是格路问题的经典问题,不难得到答案是(inom{N+M}{M - i})

    那么当(N > M)(Ans = sumlimits_{i=1}^M inom{N + M}{M - i} = sumlimits_{i=0}^{M - 1} inom{N + M}{i}),当(N leq M)(Ans = M - N + sumlimits_{i=0}^{N - 1} inom{N + M}{i})

    那么如果我们可以快速求出(f(x,y) = sumlimits_{i=0}^x inom{y}{i})就可以快速求解。

    注意到这是一个二元组询问,似乎不能直接做,不妨考虑莫队。那么我们需要在知道(f(x,y))(O(1))求出(f(x,y pm 1))以及(f(x pm 1,y))。后者可以直接做,对于前者可以使用(inom{y}{x} = inom{y - 1}{x} + inom{y - 1}{x - 1})得到一种(O(1))的转移方法。

    代码

  • 相关阅读:
    Analog power pin UPF defination
    动态功耗计算
    静态功耗 计算
    Innovus 对multibit 的支持
    P &R 12
    P & R 11
    power-plan如何定
    P & R 10
    P & R 9
    线程基础
  • 原文地址:https://www.cnblogs.com/Itst/p/10919951.html
Copyright © 2011-2022 走看看