集训总结2

分治

分治的基本思想

对于一个问题,分成两个部分分别处理后再合并答案。

cdq分治

基本概念

cdq分治是指一类先算左边,再算左边对右边贡献的分治。

基础例题

三维偏序
题意

有 n 个三元组 ( a i , b i , c i ) (a_i,b_i,c_i) (ai,bi,ci),对于每个三元组,你要求出有多少个其它三元组 ( a j , b j , c j ) (a_j,b_j,c_j) (aj,bj,cj) 满足 a j ≤ a i , b j ≤ b i , c j ≤ c i a_j \leq a_i,b_j \leq b_i,c_j \leq c_i ajai,bjbi,cjci

数据规模与约定

n ≤ 1 e 5 n \leq 1e5 n1e5

思路

先按 a i a_i ai 从小到大排序,就可以将三维偏序转化为二维偏序,再维护一个树状数组即可。

最长偏序链
题意

n n n 个三元组 ( a i , b i , c i ) (a_i,b_i,c_i) (ai,bi,ci),你需要求出最多的三元组,使得他们两两存在偏序关系。

数据规模与约定

n ≤ 1 e 5 n \leq 1e5 n1e5

思路

大致想法和上一题一样,只不过要吧上一题的计数改成dp。

线段树分治

线段树分治是指在把操作放在一棵树上,再用dfs等将树上的信息分治再合并求解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值