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

    珍爱生命,远离抄袭!
  • 相关阅读:
    Linux 查看端口占用情况
    Linux 的 ls 和 ll 的使用方法:
    awk文本分析
    【Linux】/etc/passwd文件中字段解释
    vue学习笔记(八)---源码学习
    uniapp学习笔记(更新中)
    微信小程序学习
    哈希表的原理
    容器通常具备一些固定的方法
    字符串的方法
  • 原文地址:https://www.cnblogs.com/ycx-akioi/p/solution-at4851.html
Copyright © 2011-2022 走看看