zoukankan      html  css  js  c++  java
  • AGC018E

    AGC018E [* hard]

    给你三个矩形。

    三个矩形从左下到右上排开。矩形顶点坐标范围是1e6

    (X,Y) 依次升序排序。

    在三个矩形内先分别选一个点出来,构成 S, T, P,求从 S 走到 T 走到 P 的方案数。

    对于所有选点方案,求和。

    (X,Yle 10^6)

    ( m Sol:)

    稍微看了一下下题解,感觉非常仙。

    点到点的方案数

    (inom{x+y}{x})

    枚举点,(mathcal O(N^6))

    点到矩形的方案数

    即:

    [egin{aligned} &sum_{j=y_1}^{y_2}sum_{i=x_1}^{x_2} inom{i+j}{j} \&=sum_{j=y_1}^{y_2}sum_{k=x_1+j}^{x_2+j} inom{k}{j} \&=sum_{j=y_1}^{y_2} igg( inom{x_2+j+1}{j+1}-inom{x_1+j}{j+1}igg ) \&=sum_{j=y_1}^{y_2}inom{x_2+j+1}{x_2}-sum_{j=y_1}^{y_2} inom{x_1+j}{x_1-1} \&=inom{x_2+y_2+2}{x_2+1}-inom{x_2+y_1+1}{x_2+1}-inom{x_1+y_2+1}{x_1}-inom{x_1+y_1}{x_1} end{aligned}]

    不难发现点走到矩形的方案数等同于点走到 ((x_2+1,y_2+1),(x_2+1,y_1),(x_1,y_2+1),(x_1,y_1)) 的方案数之差。

    枚举 S 和 T,复杂度为 (mathcal O(N^4))

    枚举 T,然后分别算,复杂度为 (mathcal O(N^2))

    矩形到矩形

    注意到对于第一个矩形的每个点现在等同于 (4) 的点的差分的组合,于是我们只需要考虑那 (4) 个点走到矩形的方案数,大概是可以通过 (16) 个点来表示答案。

    从矩形出发,经过矩形,到达另一个矩形

    等价于从这 (16) 个点出发,且路径经过了那个矩形的方案数。

    注意到进入点是 (mathcal O(N)) 的,所以枚举进入点即可。

    复杂度 (mathcal O(16N))

    本题

    然而在第二个矩形中走的路径长度会影响答案。

    假设走的长度为 ( m len),那么对答案的贡献为 ( m len)

    假设从 ((x_1,y_1)) 进入,从 ((x_2,y_2)) 出去,那么对答案的贡献是 ((x_2+y_2)-(x_1+y_1))

    等一下,好像维度可以分离?!

    枚举进入点,枚举出去点,分别算贡献即可,复杂度 (mathcal O(16 imes 4 imes n)),大概是 (mathcal O(64n))

  • 相关阅读:
    docker gitlab and gitlab api
    service mesh,linkerd,sidecar,apigateway
    FIS3
    various system release [online]
    certification on windows and
    postman_
    macbook ios recovery and mount hfs+ journal and revert
    distribution system index
    登录科普(一)CAS与Oauth
    sonar,jiar,xray,jenkins[cli] [sudoers]
  • 原文地址:https://www.cnblogs.com/Soulist/p/13653643.html
Copyright © 2011-2022 走看看