CDQ分治专题

CDQ分治

概述

CDQ分治, 用类似归并求逆序对的思想, 对一段修改/查询等二分, 递归求解左右两端子问题, 并计算左边修改等, 对右边查询等的贡献

具体如:

solve(int l, int r)
{
    solve(l, mid);
    ...(左边对右边的贡献)
    solve(mid + 1, r); 
    /*
    递归写的位置取决于具体情况
    如左边询问对右边产生影响时先solve(l,r)在计算贡献
    如果右边询问被左边更新后,会对更右边的询问产生影响,则solve(mid+1,r)要后做
    等等
    */
}

可以解决偏序,以及斜率不有序的斜率优化DP等问题

因为求解左区间对右区间影响时, 左边整体对右边有序(如DP时下标,或偏序时的某一维坐标),从而可以使左右区间内部各自以其他排序标准排序, 从而达到降维,排序等目的,简化问题

A - Jam's problem again HDU - 5618

B - Pinball Game 3D HDU - 4742

C - Crowd HDU - 4456

D - 动态逆序对 HYSBZ - 3295

E - 货币兑换Cash HYSBZ - 1492

F - 序列 HYSBZ - 4553

易错点

  • 排序写挂
  • 解决子问题的与处理贡献的先后没考虑清楚
  • 题意读错

转载于:https://www.cnblogs.com/ikihsiguoyr/p/10569473.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值