当前位置: 首页 > news >正文

Note - CDQ 套 CDQ

不难的,如果你会 CDQ。

给代码:

struct Node{int a, b, c, d;int val, dp, flag;bool operator==(Node o){return a==o.a&&b==o.b&&c==o.c&&d==o.d;}
} a[N];int fwk[N];
#define lowbit(x) (x&-x)
inline void modify(int x, int k){for(int i = x; i <= k4; i += lowbit(i)) fwk[i] = max(fwk[i], k);}
inline int query(int x){int res = 0; for(int i = x; i; i ^= lowbit(i)) res = max(res, fwk[i]); return res;}
inline void clear(int x){for(int i = x; i <= k4; i += lowbit(i)) fwk[i] = 0;}#define mid ((l+r)>>1)
inline void cdq3d(int l, int r){if(l == r) return;cdq3d(l, mid);sort(a+l, a+mid+1,   [&](Node o1, Node o2){return o1.c<o2.c||(o1.c==o2.c&&(o1.d<o2.d||(o1.d==o2.d&&(o1.a<o2.a||(o1.a==o2.a&&o1.b<o2.b)))));});sort(a+mid+1, a+r+1, [&](Node o1, Node o2){return o1.c<o2.c||(o1.c==o2.c&&(o1.d<o2.d||(o1.d==o2.d&&(o1.a<o2.a||(o1.a==o2.a&&o1.b<o2.b)))));});int i = l, j = mid+1;while(j <= r){while(i <= mid && a[j].c >= a[i].c){if(a[i].flag) modify(a[i].d, a[i].dp);++i;}if(!a[j].flag) a[j].dp = max(a[j].dp, query(a[j].d)+a[j].val);++j;}while(i > l){--i;if(a[i].flag) clear(a[i].d);}sort(a+mid+1, a+r+1, [&](Node o1, Node o2){return o1.b<o2.b||(o1.b==o2.b&&(o1.c<o2.c||(o1.c==o2.c&&(o1.d<o2.d||(o1.d==o2.d&&o1.a<o2.a)))));});cdq3d(mid+1, r);return;
}
inline void cdq4d(int l, int r){if(l == r) return;cdq4d(l, mid);for(int i = l; i <= mid;   ++i) a[i].flag = true;for(int i = mid+1; i <= r; ++i) a[i].flag = false;sort(a+l, a+r+1, [&](Node o1, Node o2){return o1.b<o2.b||(o1.b==o2.b&&(o1.c<o2.c||(o1.c==o2.c&&(o1.d<o2.d||(o1.d==o2.d&&o1.a<o2.a)))));});cdq3d(l, r);sort(a+l, a+r+1, [&](Node o1, Node o2){return o1.a<o2.a||(o1.a==o2.a&&(o1.b<o2.b||(o1.b==o2.b&&(o1.c<o2.c||(o1.c==o2.c&&o1.d<o2.d)))));});cdq4d(mid+1, r);return;
}

我们可以使用第一层 CDQ 标记一个点在最外层 left 还是 right,即第一维较小还是较大,确保了第一维的顺序。

然后进行第二层 CDQ。在这里,left 的点的第二维一定小于 right,确保了第二维的顺序。

然后在归并排序中,确保了第三维的顺序。

最后树状数组确保了第四维的顺序。

http://www.jsqmd.com/news/341995/

相关文章:

  • 小程序开发公司怎么选?2026年主流选型攻略奉上(活动小程序、预约小程序、物业小程序开发公司) - 品牌2025
  • 10个SolidWorks人员可以共享一台服务器的算力进行设计办公吗
  • day03
  • 论文摘要AI检测率高怎么改?降低摘要AIGC疑似度的关键技巧
  • 开封专业的老旧房改造企业费用多少,性价比高不高 - 工业品牌热点
  • 2026国内最新耐候胶品牌TOP5推荐:服务深度覆盖江苏、山东、济南等地,防水型/厨卫专用/门窗专用优质耐候胶厂商权威榜单发布,多场景适配助力品质装修 - 品牌推荐2026
  • 用过才敢说!千笔,最强的一键生成论文工具
  • 微信小程序开发公司哪家好?2026年5家值得推荐( 社区小程序开发公司 、接诉即办小程序、党政小程序开发公司推荐) - 品牌2025
  • 数据分析部分AI率高正常吗?如何处理实证研究的AIGC检测问题
  • 快递取件码是怎样生成的?获取快递鸟取件码技术对接全攻略
  • 停止在1688上浪费时间:教你一招,精准触达生产企业决策者
  • 对接多平台霸王餐API:Java中适配器模式的落地与接口统一封装技巧
  • 2026年无锡靠谱的木箱包装加工厂推荐,专业厂家大盘点 - 工业推荐榜
  • 【开题答辩全过程】以 高校科研管理平台的设计与实现为例,包含答辩的问题和答案
  • 霸王餐接口开发进阶:Java中使用设计模式优化接口对接的代码结构
  • 探寻浙江高性价比考研培训基地,思研考研是优选 - myqiye
  • 论文降AI率后重复率升高怎么办?如何同时解决AIGC和查重问题
  • 外卖省钱类APP后端:Java实现霸王餐返利计算的通用算法与优化
  • 聊聊消字号申请推荐机构,食妆健全链路服务值得选 - 工业设备
  • ChatGPT写的论文怎么降AI率?AIGC生成内容的检测规避方法
  • 解决leetcode第3826题.最小分割分数问题
  • 本科毕业论文降AI率攻略:如何让AIGC检测疑似度达标
  • 论文结论部分AI率高怎么处理?降低结语AIGC疑似度的写作建议
  • 黑客?1小时内入侵100台服务器,百度成为帮凶?!
  • yolov5跑数据特别慢,如何提升?
  • 盘州市英语雅思培训机构推荐|2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • 为什么同义词替换降不了AI率?深度解析AIGC检测的判断逻辑
  • 骨骼网格体
  • 微算法科技(NASDAQ :MLGO)抗量子攻击区块链共识机制:通过量子纠缠态优化节点验证流程,降低计算复杂度
  • 【开题答辩全过程】以 基于Spring Boot的驾校信息管理系统的设计与实现为例,包含答辩的问题和答案