随笔分类 - 基础算法 - CDQ分治
摘要:题目大意:求二维最长上升子序列的长度。 题解: 可以看出,这个问题等价于三维偏序问题。 不过在进行分治的时候要注意,由于 dp 转移是有顺序的,因此只能先处理左半部分,再处理左半部分对右边的贡献,最后处理右半部分。 代码如下 cpp include using namespace std; cons
        阅读全文
                
摘要:题目大意:给定一个 N\ N 的矩形,有 Q 次操作,每个操作可以是矩形单点修改或查询子矩形的权值和。 题解:CDQ分治适合处理修改操作之间互不影响且支持离线的题目。 满足以上操作条件的显然可以树套树来做,不过代码量起飞,我也写不出来 qaq。。 学到了利用 cdq 分治来解决这种问题。发现操作之间
        阅读全文
                
摘要:题目大意:给定一个三维空间点的坐标,求对于任意一个点三维均小于等于这个点的点个数。 题解:学会了简单的 cdq 分治。 首先,先将第一维从小到大排序,再用类似归并排序的操作对第二维进行排序,在第二维合并的过程中,用树状数组维护第三维,统计左半部分对右半部分答案的贡献。 需要注意的几点问题,如下: 1
        阅读全文
                

 浙公网安备 33010602011771号
浙公网安备 33010602011771号