摘要: 题面 • 线段树维护的题,关键在于合并区间答案。 • ans 数组记录每一段区间的答案。 • 然后会发现对于每一个子序列,有两种点在当前子序列中一定满足要求: 1. 子序列中的第一个点。 2. 子序列中权值最大的点。 • 而且 pushup 时,左儿子的 ans 值会被父节点全部接受。 • 通过上面 阅读全文
posted @ 2019-02-25 23:21 Hevix 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题面 • 如果没有撤销操作的话,它无非就是单纯的线段树。 • 如果加上撤销操作的话,它还可以是单纯的线段树。 • 把撤销操作看做是另一维的限制,那么修改与其对应的撤销就可以当做一个二维 的修改。 • 将询问的点取出来后建一棵 K-D tree 就可以当做线段树操作了。 1 #include<bits 阅读全文
posted @ 2019-02-25 22:57 Hevix 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 题面 • 平面是二维的,第 K 大是相对的。 • 单纯的 K- D 似乎并不能解决(反正我不会)。 • 第 K 大和二分是紧密相关的。 • 二分之后的判定就是一个二维数点问题。 • 所以我们可以线段树套 K-D tree 。 1 #include<bits/stdc++.h> 2 #define l 阅读全文
posted @ 2019-02-25 22:40 Hevix 阅读(211) 评论(0) 推荐(0) 编辑
摘要: • 通过 K-D tree 和一个优先队列,可以查询距离一个钦定点第 K 远的点。 • 具体操作看起来似乎比较暴力。 1. 首先将 K 个 “ 空 ” 的值存入队列。 2. 暴力 dfs K-D tree 更新队列。 • 所有点对中的第 K 远点对显然只需要将队列全局化。 P2093 [国家集训队] 阅读全文
posted @ 2019-02-25 22:19 Hevix 阅读(295) 评论(0) 推荐(0) 编辑