随笔分类 - 数据结构
摘要:神人题。 首先要二分一下\(k\)。然后呢?然后就不会了。 查看题解仔细思考后,发现模拟就行了。 开一个堆,把前 \(k\) 个牛放进去。 然后对于后面的牛,你每次把堆顶的牛拿出来,然后把后面的牛放进去。由于要等到堆顶的牛跳完,所以放进去的时候要加上堆顶的牛的跳舞时间。 记录最后一头牛跳完的时间。
阅读全文
摘要:完全不需要剖分啊,不知道 tag 在打什么劲。 首先看题面。 操作1是正常的操作,开一颗线段树记录 dfs 序区间修改。 操作2是反常的操作。这题需要记 bfs 序。这样就可以确保一个节点的直连节点 bfs 序是连续的。然后再开一颗线段树记录 bfs 序区间修改。 注意哦,一个节点和他的子节点的 b
阅读全文
摘要:不知道为啥,这个知识点就是学的有点费劲 ( Pt1. P5490[模板]扫描线 & 矩形面积并 先想一个问题。给你一堆动态变化的线段,让你求它们的公共覆盖面积。 这是不是线段树维护一下就行(? 然后这个线段树的注意点是,由于我们维护的是线段而不是点,线段树节点会出现偏差。比如节点 2, 3 分别记录
阅读全文
摘要:P1783题目链接 简化题意,就是给你 \(m\) 个点,让你以这 \(m\) 个点为圆心以一定半径长度画圆,求让这 \(m\) 个园能正好堵住长度为 \(n\) 的缝隙的最小半径(感性理解) 首先能想到二分半径长度。检查一下发现复杂度是 \(O(m^2\log W)\) ,完全没问题,那么暴力计算
阅读全文
摘要:本文在线更新中。 概念 这里头有很多定义,理解了就记住了。 重儿子 一个节点所有儿子里子树节点最多的节点(即子树最大),每个节点只有一个重儿子 轻儿子 除了重儿子都叫轻儿子 重边 节点和自己重儿子的连边 轻边 节点和自己轻儿子的连边 重链 由多条连续重边连成的链,每个节点都有一个所属的重链 轻链 由
阅读全文
摘要:其实就是建立 \(a\) 个单调队列,然后同时维护一个长度为 \(n\) 的区间最大值和最小值,最后再对这 \(a\) 个单调队列所维护的区间最大值和最小值做一个长度为 \(n\) 的单调队列,也是维护一个长度为 \(n\) 的区间最大值和最小值。 相当于第一把把矩阵压缩成一个序列,第二把对序列做单
阅读全文
摘要:做法是简单的。 我们知道题目其实就是按照树节点的深度分类修改,那么直接用两个树状数组分别维护奇数层和偶数层的情况。 由于他俩各司其职,你也不需要在修改的时候会多修多的问题,保证不修少就好了。修改使用 dfn 来实现把树映射到序列上。最后查询的时候看一下查询的节点的深度来决定输出哪个树状数组的值。 哦
阅读全文
摘要:其实就是把一些简单操作换到了 dfn 上,然后需要动脑子想一下操作如何转化。 操作一是比较显然的。由于 dfn 是在 dfs 的基础上构成的,你记录一下每个点 \(i\) 的子树大小 \(siz_i\) 然后修改 \(dfn_i\) 到 \(dfn_i + siz_i - 1\) 范围内元素的值就可
阅读全文
摘要:实际上知道了和差角公式这个题就好做了。 \[\sin(\alpha + \beta) = \sin(\alpha) \cos (\beta) + \cos(\alpha)\sin(\beta) \]\[\cos(\alpha + \beta) = \cos(\alpha)\cos(\beta) -
阅读全文
摘要:替罪羊树 前言 首先我们要知道 BST 是什么 其实就是一颗用来查找的二叉树,然后有个特性,在任意子树,它的左节点权值小于根节点权值小于右节点权值 那么我们知道如果这个树是完全对称的,他的查找复杂度就是 \(O(log N)\) 的,然而要把它一直维持在完美的平衡状态很不容易 这就催生了一系列的 B
阅读全文
摘要:这个结论的说明其实洛谷的第一篇题解写的很清楚了 qwq 相当于是根据离散值建权值树状数组,动态维护大于 s 的种类的数量,和小于 s 的种类的和,然后在维护一下这个数组本身的值就行了。 注意哦,这里离散是要把查询更新一起离线离散的 具体实现还是有点麻烦的,好像别的题解都没仔细写,那么我来详细展开一下
阅读全文

浙公网安备 33010602011771号