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

    珍爱生命,远离抄袭!
  • 相关阅读:
    简单实现 C# 与 Javascript的兼容
    如何写好CSS系列之表单(form)
    D3、openlayers的一次尝试
    如何写好css系列之button
    mockjs,json-server一起搭建前端通用的数据模拟框架
    AIX中的/etc/inittab文件
    AIX中crontab和at 定时任务
    AIX中的服务管理
    AIX系统的备份和恢复
    AIX中磁带设备的使用
  • 原文地址:https://www.cnblogs.com/ycx-akioi/p/solution-at4851.html
Copyright © 2011-2022 走看看