长沙一中集训~春~Notes(Day 6)

Day 6

今天久违的没有题目变成了上课。由一位高一开始学OI高一进省队(OrzOrzOrzOrz)的前辈给我们讲“杂题”
(结果讲了好多有用的东西,只有3道左右咱觉得可以归到杂题里面吧)

P1 CDQ分治

其实CDQ分治这个东西lyc dalao很早就在推咱写,然而咱整天摸鱼一眼都没有看过Qw
CDQ分治的思想是对于一个序列进行分治,在分治时保证序列有序,暴力统计左边的序列对右侧的影响。这样的话时间复杂度能够达到优秀的O(n \log n)
使用CDQ分治可以利用数据的有序性来处理高维序列中的某一或某几维,从而高维的序列问题转化到低维。这意味着你可以使用CDQ分治套CDQ分治去解决三维序列问题(czh dalao也的确是这么做的)。
顺便一提,CDQ分治的名字的来源是陈丹琦dalao,最早是在她CTSC 2008的作业中提出的(OrzOrzOrzOrzOrz)。似乎插头DP也是她提出的(CTSC 2008中的论文)?以及,cdq dalao似乎是长沙人……这边这么恐怖的么pup
我们以Luogu P3810 【模板】三维偏序(陌上花开)来讲解CDQ分治。
首先,我们以a为第一关键字,b为第二关键字,c为第三关键字升序排序,这样在分治时我们无需考虑a,左侧区间的a始终比右侧大。这样我们就降低了一维。
接下来我们对第二维b进行CDQ分治。我们不断对每个区间二分递归处理,递归返回时我们枚举右区间每个元素,统计左侧c小于等于它的元素个数,这里可以使用树状数组求逆序对来做,当然你也可以和czh dalao一样再套一个CDQ分治来做。因为ab是升序的,所以这样的元素的ab也必定小于等于它。
最后,因为我们希望b也是有序的,所以我们在分治过程中实现一个归并排序,递归返回时对于当前这个区间的左右区间进行归并排序。(其实这里直接快排也可以,但是会多一个log
实现如下:

以下暂时咕咕咕…..毕竟咱也还没弄懂

P2 点分治

P3 块状分治

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇