@ByteBenderCompetitive Programming 常见算法(一) 中发帖

扫描线
扫描线通过将二维或三维的几何问题降一维,模拟一根直线扫过平面或者一个屏幕扫过一个空间,从而将2D问题降为1D,3D问题降为2D
扫描线的核心在于化静为动,在处理二维问题时,我们将一个二维图案转换为一个关于时间的函数。在扫描线扫过时,我们只关心事件点的变化
事件点是在扫描线移动的过程中,需要更新答案或关键状态的位置
为了存储扫描线上的状态,通常使用线段树或树状数组来维护
二分答案
二分答案通常用于解决最小化最大值或者最大化最小值这类问题
其核心是不去求出那个答案,而是猜测一个答案,并且验证这个答案是否可行
在答案是单调的,并且验证函数的时间复杂度较低时,我们可以使用二分法来找到最优解
并查集
并查集是一种树状的数据结构,用于处理集合的合并与查询操作
其核心是维护一森林,其中每颗树代表一个联通快,树的根节点是它的代表元
查询时,我们不断寻找i的根,直到par[i]==...