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. 对于dubbo和zookeeper的浅见

    在服务器集群环境中,阿里推出的dubbo框架一直是让人仰望的存在,可如今想想,也没啥. dubbo其实就是一个调用工具,他的服务调度也就是知名的几个负载均衡算法,服务监控其实也就是有一个定时任务在定期 ...

  2. 【SSH通道数据库连接池】连接远程linix服务器上面的mysql

    首先,我用的是阿里的druid数据库连接池,其次,需要第三方jar包,maven坐标如下: <dependency> <groupId>com.jcraft</group ...

  3. ES6中数组新增了哪些扩展?

    一.扩展运算符的应用 ES6通过扩展元素符...,好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列 console.log(...[1, 2, 3])// 1 2 3console.l ...

  4. JVM简明笔记1:JVM 概述

    什么是JVM JVM 即 Java Virtual Machine,中文名为 Java虚拟机. 一般情况下 C/C++ 程序,编译成二进制文件后,就可以直接执行了: Java 需要使用 javac 编 ...

  5. 力扣275(jav&python)-H 指数 II(中等)

    题目: 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 升序排列 .计算并返回该研究者的 h 指数. h ...

  6. 力扣430(java)-扁平化多级双向链表(中等)

    题目: 你会得到一个双链表,其中包含的节点有一个下一个指针.一个前一个指针和一个额外的 子指针 .这个子指针可能指向一个单独的双向链表,也包含这些特殊的节点.这些子列表可以有一个或多个自己的子列表,以 ...

  7. 一个好的网站logo设计长这样

    ​简介:一个好的网站logo,不仅让用户一眼知道网站品牌传递的信息,还能提高网站专业度和丰富度,增加SEO搜索排名.今天分享下如何设计一款实用的网站logo.阿里云智能logo设计,在线免费体验log ...

  8. 六年团队Leader实战秘诀|程序员最重要的八种软技能

    ​简介:笔者在带团队的六年中发现,程序员们在职场都有一个共同的困扰:"好像写代码都没什么问题了,日常工作基本上都是应付业务需求的开发,好像找不到其他的更大的附加价值了,我应该找一些什么样的发 ...

  9. 技术解读:英特尔 x86 平台上,AI 能力是如何进行演进的?(附PPT)

    ​简介:AI 生态系统是怎样的?其中又有哪些关键技术? AI 计算力的指数增长意味着,为了解决越来越复杂的用例,即使是 1000 倍的计算性能增长也很容易被消耗.因此,需要通过软件生态系统的助力,才能 ...

  10. kubernetes pv-controller 解析

    ​简介:pv controller是 kcm 的组件之一,它负责处理集群中的pvc/pv对象,对pvc/pv 对象进行状态转换.本文将基于 kubernetes 1.23进行解析. ​ 作者 | 牧琦 ...