zoukankan      html  css  js  c++  java
  • ABC136F

    首先感觉无从下手?考虑换一个对答案的贡献体(这是个惯用套路)(一开始是点的集合,后来我又想换成矩形,发现仍然不可做,就偏偏没有想到换成点)。

    显然,点对答案的贡献就是有多少个集合生成的矩形包含这个点。知道了这个就并不是很难了。我们考虑以该点为原点建立平面直角坐标系,然后集合有两种情况:

    1. 包含该点,此时矩形显然一定包含该点,则贡献是 (2^{n-1})
    2. 不包含该点。那么显然,该点被矩形包含当且仅当一、三象限都有点或二、四象限都有点。然后四个象限的点数是个二维数点问题,这是个静态的,于是可以对一维排序来降维,从而使用 BIT 1log 解决。然后你如果把两种都算上去的话,那会有一二三四象限都有点的重复情况,那这是个简单容斥,减一下即可。

    也就是,设四个象限的点数分别为 (I,II,III,IV) 的话,那么贡献是:

    [egin{aligned}&2^{n-1}+\&!left(2^{II}-1 ight)!left(2^{IV}-1 ight)!2^{I}2^{III}+\&!left(2^{I}-1 ight)!left(2^{III}-1 ight)!2^{II}2^{IV}-\&!left(2^{II}-1 ight)!left(2^{IV}-1 ight)!left(2^{I}-1 ight)!left(2^{III}-1 ight)end{aligned} ]

    然后就做完了,复杂度线性对数。

    code

    珍爱生命,远离抄袭!
  • 相关阅读:
    个人报告04
    个人报告03
    构建之法阅读笔记07
    个人报告02
    第二次冲刺个人报告01
    第二阶段个人总结5
    第十三周学习进度情况
    第二阶段个人总结4(5.28)
    第二阶段个人总结3(5.27)
    课堂作业之找小水王
  • 原文地址:https://www.cnblogs.com/ycx-akioi/p/solution-at4851.html
Copyright © 2011-2022 走看看