线段树

小蒟蒻很久以前写的讲解

单点修改

CF1379F Chess Strikes Back 代码
(2 imes 2) 的格子分成一块,不能有 不能放左上角的格子 在 不能放右下角的格子 的左上方(包括同行同列),用可删堆(或 ( t set))维护一行的最边的 不能放左上角的格子 和 不能放左上角的格子,用线段树单点修改动态维护答案。

区间修改

CF1295E Permutation Separation 代码
要会打暴力(尝试优化),要会逆向思维。把线段树当作求答案数组,区间修改即可。我太蒻了。

CF643G Choosing Ads 题解
奇怪的合并方式,引用了众数的性质。

CF280D k-Maximum Subsequence Sum 代码
模拟费用流。维护区间最大和子区间,带区间反转操作。

CF242E XOR on Segment 代码
每位拆成一个线段树,区间修改求和。

包含线段权值

CF1221F Choose a Square 代码
转化为线段 ([x_i,y_i]) 的权值为 (c_i),然后用线段树求包含线段权值最值。

扫描线

USACO5.5 矩形周长Picture 代码
求周长。横竖分开处理,用线段树维护。在厚度为 (0) 和非 (0) 的临界点统计线段长度和。

原文地址:https://www.cnblogs.com/Wendigo/p/12957531.html