首页 > 其他分享 >与点对有关的CDQ分治(菜鸟笔记)

与点对有关的CDQ分治(菜鸟笔记)

时间:2023-08-11 21:44:15浏览次数:37  
标签:le 菜鸟 有关 分治 mid CDQ 区间

参考文章


      首先要说明的是CDQ是一种思想,并且扩展范围很广。

      这里主要说的是与点对有关的CDQ。参考文章说了与CDQ主要解决的三大类问题。第一类就是解决和点对有关的问题。主要是给定一个长度为 n 的序列,然后找出其中满足题意的点对 \((i, j)\)。

      CDQ的一般过程如下。

      1.首先确定区间的 \(mid\)。
      2.对区间划分为 \([l, mid]\) 和 \([mid + 1, r]\)。

            点对 \((i, j)\) 的位置关系有三种:

\[l \le i \le mid, \ l \le j \le mid \]

\[l \le i \le mid, \ mid + 1 \le j \le r \]

\[mid + 1 \le i \le r, \ mid + 1 \le j \le r \]

      3.对于第一和第三类点对我们将区间划分为 \([l, mid]\) 和 \([mid + 1, r]\) 递归处理,接下来就是自己想方设法解决第二类点对。

标签:le,菜鸟,有关,分治,mid,CDQ,区间
From: https://www.cnblogs.com/dkdklcx/p/17624003.html

相关文章

  • 分治算法C++
    1、光荣的梦想题目描述】Prince对他在这片陆上维护的秩序感到满意,于是决定启程离开艾泽拉斯。在他动身之前,Prince决定赋予King_Bette最强大的能量以守护世界、保卫这里的平衡与和谐。在那个时代,平衡是个梦想。因为有很多奇异的物种拥有各种不稳定的能量,平衡瞬间即被打破。KB决定求......
  • 浅谈根号分治
    浅谈根号分治一、问题引入  给定一个长度为\(n\)的序列,进行\(m\)次询问。每次询问给出两个数字\(x,y\)。对于每次询问,输出所有下标模除\(x\)等于\(y\)的元素的总和。  对于这个问题,我们发现他要维护的是一段离散的元素的和,而我们平时学的数据结构,如线段树等都只能维护一段......
  • 【学习笔记】线段树分治
    定义线段树分治是一种解决一类有插入、删除和整体查询操作的问题的方法。它是一种离线做法,通过在线段树上记录操作的时间区间来处理修改对询问的影响。每个操作被看作一个时间区间的修改,并在线段树上进行标记。然后通过深度优先搜索(DFS)依次执行这些操作,直到根节点来回答查询,并在......
  • 根号分治-2023牛客7 E-Star Wars
      也就是说对于大点和小点我们采用不同的方式维护对于大点来说我们只需要记录它的周围点的总和不需要知道具体的谁链接了它 对于小点我们需要维护它的所有信息他自己链接了哪些点 需要再开一个vector表示自己链接的大点这样大对大或者小对大的时候维护的信息也......
  • 【W的AC企划 - 第六期】树上分治
    往期浏览树上分治点分治讲解每次选取树的重心进行递归分治,中阶算法,大部分模板不需要理解,但是每一题都需要对维护函数进行修改。复杂度\(\mathcalO(N\logN)\)。个人封装由于需要进行一定程度的修改,不符合结构体封装的原则,故没有使用结构体。introot=0,MaxTree=1e1......
  • 点分治
    点分治模板1注意vis数组的作用,相当于把树切割注意变量sum的作用,第一次写的时候没用sum,全部用了n,导致没有正确找到树的重心,然后tle了#include<bits/stdc++.h>usingll=longlong;constintN=1E4+5,M=105,O=1E7+10;constintINF=......
  • 二分图(菜鸟笔记)
    1.二分图的有关性质  首先二分图必定不具有奇数环。而不具有奇数环的图必定可以被染成相邻两个点都不是同个颜色的图(只用黑白两色)。  首先证明不具有奇数环的图是图在染色不存在矛盾的充分必要条件。  证明充分性,用反证法。图中无奇数环,但是染色存在矛盾,则有白黑白......
  • [Ynoi2016] 这是我自己的发明(根号分治+分块/莫队)
    题目传送门soltion简单题换根显然可以拆成\(O(1)\)个区间,这里先不管。直接做法是莫队,把双子树拆成\(dfs\)序上的双前缀,可以直接莫队,但是常数比较大。另一种做法是根分,对颜色出现次数分治,大于的求出\(dfs\)序的前缀和即可,小于的因为一共只有\(O(n\sqrtn)\)个点对,所以......
  • C/C++ 数据结构五大核心算法之分治法
    分治法——见名思义,即分而治之,从而得到我们想要的最终结果。分治法的思想是将一个规模为N的问题分解为k个较小的子问题,这些子问题遵循的处理方式就是互相独立且与原问题相同。两部分组成:分(divide):递归解决较小的问题治(conquer):然后从子问题的解构建原问题的解三个步骤:1、......
  • 面试-基本的算法要了如指掌,比如查找、排序、动态规划、分治等
    在了解这些基本算法之前还是得先了解这些基本的数据结构,这些都是要熟记与心的。基本数据结构比如:字符串、链表、二叉树、堆、栈、队列、哈希等字符串stringstr="helloworld";//使用格式//string是类。//str输出的大小,取决于size函数的返回值。链表classListNode{ pu......