Luogu题单

前置芝士

\(K-D\;Tree\)

例题略解

P2479 [SDOI2010]捉迷藏

大概就是 K-D Tree 的板子题了吧,网上的打法都不太友好,参考了 fengwu 的打法。

对于建树的时候每一层针对不同的维度来建,保证相邻的层不是根据一个维度建。

取 min 和取 max 的操作不太一样,因为最小值并不一定是两端,也可能是序列中间的部分。

有一个优化就是关于枚举顺序,优先挑更可能是答案的来进行计算。

每一次计算的结果同时对于与现在扫到的点最优解的点的值也进行更新,算是一个优化吧

\(code\)

P4475 巧克力王国

还是维护两个坐标的最大以及最小值。

因为是一次函数,所以只要考虑最大值以及最小值就可以知道这个区间是否可以。

在维护最大最小值的同时维护一个区间的美味值加和。

对于每一个询问扫一遍查询一遍就好了。

\(code\)

P2093 [国家集训队]JZPFAR

还是老套路,维护最大最小值。

同时加上一个优先队列维护当前扫到的前 k 大的数字。

遇到更优的就替换掉。

\(code\)

P4357 [CQOI2016]K 远点对

和上一个题的套路一模一样。

只不过没有了询问,直接再次扫一边整个序列进行求解就好了。

注意每一个点对会被扫到两边,需要把给的 K 乘上一个 2。

\(code\)

P4169 [Violet]天使玩偶/SJY摆棋子

其实如果没有插入操作的话就是一个板子。。。

对于插入操作如果我们只是暴力插入极有可能会导致整棵树的不平衡。

因此我们借鉴一下替罪羊树的思路:

如果某一棵子树所占比大于某一个值,就利用一个 \(\alpha\) 值对于整棵树进行重建,以保证整棵树的平衡。

于是我们愉快的用 \(pia\) 操作+\(O_2\) 通过了此题。

\(code\)

P4848 崂山白花蛇草水

用暴力水过去的,但是快就行了。

开两个数组,一个大的,一个小的,并且保证是有序的。

每一次的插入操作直接插入到小的数组的对应位置。

如果插入后小块的大小 \(\ge \sqrt{n}\) 的话就把小块中的全部归并到大的数组中。

这样做可以大大的减小插入的复杂度。

然后查询的话,直接暴力查找就好了。

\(code\)

K-D Tree 总结的更多相关文章

  1. 第46届ICPC澳门站 K - Link-Cut Tree // 贪心 + 并查集 + DFS

    原题链接:K-Link-Cut Tree_第46屆ICPC 東亞洲區域賽(澳門)(正式賽) (nowcoder.com) 题意: 要求一个边权值总和最小的环,并从小到大输出边权值(2的次幂):若不存在 ...

  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 ...

  3. Size Balance Tree(SBT模板整理)

    /* * tree[x].left 表示以 x 为节点的左儿子 * tree[x].right 表示以 x 为节点的右儿子 * tree[x].size 表示以 x 为根的节点的个数(大小) */ s ...

  4. HDU3333 Turing Tree(线段树)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=3333 Description After inventing Turing Tree, 3x ...

  5. K-D Tree

    这篇随笔是对Wikipedia上k-d tree词条的摘录, 我认为解释得相当生动详细, 是一篇不可多得的好文. Overview A \(k\)-d tree (short for \(k\)-di ...

  6. POJ 3321 Apple Tree(树状数组)

                                                              Apple Tree Time Limit: 2000MS   Memory Lim ...

  7. CF 161D Distance in Tree 树形DP

    一棵树,边长都是1,问这棵树有多少点对的距离刚好为k 令tree(i)表示以i为根的子树 dp[i][j][1]:在tree(i)中,经过节点i,长度为j,其中一个端点为i的路径的个数dp[i][j] ...

  8. Segment Tree 扫描线 分类: ACM TYPE 2014-08-29 13:08 89人阅读 评论(0) 收藏

    #include<iostream> #include<cstdio> #include<algorithm> #define Max 1005 using nam ...

  9. Size Balanced Tree(SBT) 模板

    首先是从二叉搜索树开始,一棵二叉搜索树的定义是: 1.这是一棵二叉树: 2.令x为二叉树中某个结点上表示的值,那么其左子树上所有结点的值都要不大于x,其右子树上所有结点的值都要不小于x. 由二叉搜索树 ...

  10. hdu 5274 Dylans loves tree(LCA + 线段树)

    Dylans loves tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

随机推荐

  1. redis 简单整理——HyperLogLog[十三]

    前言 简单介绍一下HyperLogLog. 正文 HyperLogLog并不是一种新的数据结构(实际类型为字符串类型),而 是一种基数算法,通过HyperLogLog可以利用极小的内存空间完成独立总数 ...

  2. LeetCode:999. 车的可用捕获量

    999. 车的可用捕获量 在一个 8 x 8 的棋盘上,有一个白色车(rook).也可能有空方块,白色的象(bishop)和黑色的卒(pawn).它们分别以字符 "R"," ...

  3. 为什么我要迁移 SpringBoot 到函数计算

    简介: 面对流量洪峰,我们再也不会手忙脚乱了,函数计算自动会帮我们扩容!很好的解决了我们的 API 场景和不定时执行各种不同任务的场景. 作者:榴莲   为什么要迁移? 我们的业务有很多对外提供服务的 ...

  4. MAE 自监督算法介绍和基于 EasyCV 的复现

    ​简介:自监督学习(Self-Supervised Learning)能利用大量无标注的数据进行表征学习,然后在特定下游任务上对参数进行微调.通过这样的方式,能够在较少有标注数据上取得优于有监督学习方 ...

  5. 一看即会:Serverless 应用开发的 7 个实战小技巧

    ​简介:干货满满,马住收藏! ​ Serverless 应用开发的 7 个经验心得 作者说:Serverless 架构下的应用开发,与传统架构的应用开发还是有比较大的区别点的,例如天然分布式架构会让很 ...

  6. 分久必合的Lindorm传奇

    简介: 2009年,阿里巴巴首先提出用分布式架构替代传统商业数据库,成功用自主开源的AliSQL支撑双11数据洪流:2016年,为应对超大规模业务场景,阿里云开始自研分布式数据库.十余年间,阿里巴巴数 ...

  7. dotnet 已知问题 错误标记 MethodImplOptions.InternalCall 特性参数将会在类型访问之前抛出 TypeLoadException 异常

    本文将记录一个 dotnet 的已知问题.当自己不小心在方法上不正确标记了 MethodImplAttribute 特性时,错误选择了 MethodImplOptions.InternalCall 参 ...

  8. VGA显示图片

    VGA显示图片 1. VGA显示图片的原理 图片比之前显示的色块和字符的数据量大,所以使用rom来存储图片.用到ROM IP.可以存放mif和hex格式,需要先把图片转换成mif格式. 2. 如何制作 ...

  9. .net 记录http请求

    记录http请求 环境 .net7 一.过滤器(Filter) 这个过程用的的是操作过滤器(ActionFilter) 二. 2.1 继承IAsyncActionFilter 2.2 重写OnActi ...

  10. Oracle【ORA-00600 internal error code arguments [2662]】恢复一例

    背景 1.数据库版本:11.2.0.4 2.未开启归档 3.没有备份:无RMAN备份.无DUMP备份 4.数据库redo log全部删除. 解决思路: Oracle 的隐含参数: _allow_res ...