K-D Tree 总结
前置芝士
例题略解
P2479 [SDOI2010]捉迷藏
大概就是 K-D Tree 的板子题了吧,网上的打法都不太友好,参考了 fengwu 的打法。
对于建树的时候每一层针对不同的维度来建,保证相邻的层不是根据一个维度建。
取 min 和取 max 的操作不太一样,因为最小值并不一定是两端,也可能是序列中间的部分。
有一个优化就是关于枚举顺序,优先挑更可能是答案的来进行计算。
每一次计算的结果同时对于与现在扫到的点最优解的点的值也进行更新,算是一个优化吧
P4475 巧克力王国
还是维护两个坐标的最大以及最小值。
因为是一次函数,所以只要考虑最大值以及最小值就可以知道这个区间是否可以。
在维护最大最小值的同时维护一个区间的美味值加和。
对于每一个询问扫一遍查询一遍就好了。
P2093 [国家集训队]JZPFAR
还是老套路,维护最大最小值。
同时加上一个优先队列维护当前扫到的前 k 大的数字。
遇到更优的就替换掉。
P4357 [CQOI2016]K 远点对
和上一个题的套路一模一样。
只不过没有了询问,直接再次扫一边整个序列进行求解就好了。
注意每一个点对会被扫到两边,需要把给的 K 乘上一个 2。
P4169 [Violet]天使玩偶/SJY摆棋子
其实如果没有插入操作的话就是一个板子。。。
对于插入操作如果我们只是暴力插入极有可能会导致整棵树的不平衡。
因此我们借鉴一下替罪羊树的思路:
如果某一棵子树所占比大于某一个值,就利用一个 \(\alpha\) 值对于整棵树进行重建,以保证整棵树的平衡。
于是我们愉快的用 \(pia\) 操作+\(O_2\) 通过了此题。
P4848 崂山白花蛇草水
用暴力水过去的,但是快就行了。
开两个数组,一个大的,一个小的,并且保证是有序的。
每一次的插入操作直接插入到小的数组的对应位置。
如果插入后小块的大小 \(\ge \sqrt{n}\) 的话就把小块中的全部归并到大的数组中。
这样做可以大大的减小插入的复杂度。
然后查询的话,直接暴力查找就好了。
K-D Tree 总结的更多相关文章
- 第46届ICPC澳门站 K - Link-Cut Tree // 贪心 + 并查集 + DFS
原题链接:K-Link-Cut Tree_第46屆ICPC 東亞洲區域賽(澳門)(正式賽) (nowcoder.com) 题意: 要求一个边权值总和最小的环,并从小到大输出边权值(2的次幂):若不存在 ...
- AOJ DSL_2_C Range Search (kD Tree)
Range Search (kD Tree) The range search problem consists of a set of attributed records S to determi ...
- Size Balance Tree(SBT模板整理)
/* * tree[x].left 表示以 x 为节点的左儿子 * tree[x].right 表示以 x 为节点的右儿子 * tree[x].size 表示以 x 为根的节点的个数(大小) */ s ...
- HDU3333 Turing Tree(线段树)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=3333 Description After inventing Turing Tree, 3x ...
- K-D Tree
这篇随笔是对Wikipedia上k-d tree词条的摘录, 我认为解释得相当生动详细, 是一篇不可多得的好文. Overview A \(k\)-d tree (short for \(k\)-di ...
- POJ 3321 Apple Tree(树状数组)
Apple Tree Time Limit: 2000MS Memory Lim ...
- CF 161D Distance in Tree 树形DP
一棵树,边长都是1,问这棵树有多少点对的距离刚好为k 令tree(i)表示以i为根的子树 dp[i][j][1]:在tree(i)中,经过节点i,长度为j,其中一个端点为i的路径的个数dp[i][j] ...
- Segment Tree 扫描线 分类: ACM TYPE 2014-08-29 13:08 89人阅读 评论(0) 收藏
#include<iostream> #include<cstdio> #include<algorithm> #define Max 1005 using nam ...
- Size Balanced Tree(SBT) 模板
首先是从二叉搜索树开始,一棵二叉搜索树的定义是: 1.这是一棵二叉树: 2.令x为二叉树中某个结点上表示的值,那么其左子树上所有结点的值都要不大于x,其右子树上所有结点的值都要不小于x. 由二叉搜索树 ...
- hdu 5274 Dylans loves tree(LCA + 线段树)
Dylans loves tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
随机推荐
- mysql 必知必会整理—游标[十四]
前言 简单介绍一下游标. 正文 需要MySQL 5 MySQL 5添加了对游标的支持,因此,本章内容适用于MySQL 5及以后的版本. 有时,需要在检索出来的行中前进或后退一行或多行.这就是使用游标的 ...
- maven 创建spring boot 需要的配置[一]
前言 之所以写这个是因为现在官方推荐云创建: 所以标注一下maven project,创建后,如何导入spring boot. 正文 1.步骤一 在pom.xml 中加入: <dependenc ...
- 认识tensorflow - 【老鱼学tensorflow2】
深度学习是模仿了生物的神经元的概念,你可以想象用一大堆的神经元通过各种刺激来对外部世界进行感知,从而建立起对外部世界的模型. 比如给你一个数据对: x y -1 -3 0 -1 1 1 2 3 3 5 ...
- 深度解读《深度探索C++对象模型》之默认构造函数
接下来我将持续更新"深度解读<深度探索C++对象模型>"系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,主动获得推文. 提到默认构造函数,很多文章和书籍 ...
- State 和 Props的理解以及区别
一.state 一个组件的显示形态可以由数据状态和外部参数所决定,而数据状态就是state,一般在 constructor 中初始化 当需要修改里面的值的状态需要通过调用setState来改变,从而达 ...
- Kafka 线上性能调优
Kafka 线上性能调优是一项综合工程,不仅仅是 Kafka 本身,还应该从硬件(存储.网络.CPU)以及操作系统方面来整体考量,首先我们要有一套生产部署方案,基于这套方案再进行调优,这样就有了可靠的 ...
- 力扣665(java)-非递减数列(中等)
题目: 给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列. 我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= ...
- 用了那么久的Lombok,你知道它的原理么?
简介: 在写Java代码的时候,最烦写setter/getter方法,自从有了Lombok插件不用再写那些方法之后,感觉再也回不去了,那你们是否好奇过Lombok是怎么把setter/getter方法 ...
- [FE] 推荐两个能全球访问的 CDN 前端资源仓库
https://unpkg.com/ https://cdnjs.com/ 部分资源库的版本不全. 访问速度请自行评估. Link:https://www.cnblogs.com/farwish/p/ ...
- Unity3D OpenVR 虚拟现实 保龄球打砖块游戏开发
据说水哥买了 Valve Index 设备,既然这个设备这么贵,不开发点有(zhi)趣(zhang)游戏就感觉对不起这个设备.本文将来开始着手开发一个可玩性不大,观赏性极强的保龄球打砖块游戏.这仅仅只 ...