zoukankan      html  css  js  c++  java
  • 快乐的一天从AC开始 | 20210724 | P3810

    题目链接

    (补20210720)

    快乐周末,名不虚传。

    晚饭和室友出去吃了,快乐。就是没想到去的馆子菜量巨大,失算了。不过吃的很爽,馆子里的音乐还是真人现场唱的,有点意思。

    心路历程

    洛谷随机到了,发现已经不会做高位偏序了,就当复习一下CDQ分治了。之后可能还会复习一下bitset的做法和KD-Tree。

    思路

    3维,直接按第一关键字排序就可以省去一维。

    现在只需要考虑2维了,故名思意,CDQ分治是分治的一种,每次将当前区间均分成两块。CDQ分治将所有点对分为3类:两个点都在左侧的,两个点都在右侧的,和横跨两侧的。都在一侧的直接分治 解决了,不用考虑。

    现在要考虑横跨两侧的。分别将两边按第二关键字排序,然后枚举右侧的位置(因为之前按第一关键字排过序了,只有左侧的点可能对右侧的点有贡献)。因为两边都是有序的,左侧一定是的某个前缀中的位置满足第二关键字小于当前枚举的点,这个可以用一个指针去维护。

    现在还有第三关键字,这个就得借助数据结构了。左侧满足条件的前缀的第三关键字都加入权值树状数组,然后再查询比当前枚举到的位置第三关键字小的点有多少个。单点修改,求前缀和,树状数组就够了。

    然后由于题目要求不包含自身,所以去个重,点加个属性记录重合的点数,最后扣去1就行了。

  • 相关阅读:
    Mac下截图快捷键
    在Mac下显示所有文件
    Mac 下格式化U盘
    在Mac OS X系统下 用dd命令将iso镜像写入u盘
    微信公众号全局返回码说明和接口频率限制说明
    Mac Git 学习笔记
    vim编程配置方法
    解决“Xlib.h not found when building graphviz on Mac OS X 10.8”错误
    Java-Session服务器端会话技术
    Java-记住上一次访问时间案例
  • 原文地址:https://www.cnblogs.com/zengzk/p/15056822.html
Copyright © 2011-2022 走看看