Codeforces Round 638 (Div. 2) F. Phoenix and Memory 区间贪心+线段树 题意 有n个人,标号为1 n,他们站的顺序未知,已知每个位置可能的标号范围为[a,b],要求还原朋友的站位顺序,同时,需要考虑还原后的站位是否是唯一的,如果不唯一,随意输出两种合 ...
分类:
其他好文 时间:
2020-05-02 16:30:55
阅读次数:
80
关于树状数组 树状数组,即 Binary Indexed Tree ,主要用于维护查询区间和 属于 log 型数据结构 和线段树比较 都是 log 级别 树状数组常数、耗费的空间都比线段树小 树状数组无法完成复杂的区间操作,功能有限 树状数组介绍 二叉树大家一定不陌生 然而真实的树状数组省去了一些空 ...
分类:
编程语言 时间:
2020-05-02 13:28:12
阅读次数:
71
最近公共祖先( ) 1. 概念 对于有根树 的两个结点 ,最近公共祖先 表示一个结点 ,满足 是`u,v`的 深度最大 的 祖先 节点。 算法分为 离线算法 和 在线算法 离线算法 ( ),是指基于在执行算法前输入数据已知的基本假设,也就是说,对于一个离线算法,在开始时就需要知道问题的所有输入数据, ...
分类:
其他好文 时间:
2020-05-02 09:31:09
阅读次数:
64
线段树其实就是一棵二叉树,它将一个数列分成小区域,每个节点分别储存其对应的区间左右端点。 设数组 a[n] ,图中 [ i,j ] 表示每一个二叉树结点对应的区间。容易发现,根节点对应的是整个区间 [ 0,n-1 ] 。一个结点对应的区间为 [ l,r ] ,当l=r时,它就是一个叶子结点,没有左右 ...
分类:
其他好文 时间:
2020-05-01 21:01:48
阅读次数:
51
$对于操作1,我们只关心最后一次操作。$ $对于操作2,我们只关心值最大的一次操作。$ $也就是说,我们记录每个居民最后一次被修改的位置$ $然后它的最终答案就是从这个位置起,max(操作2最大的一次,最后一次修改的值)$ $当然,如果没有被修改过,默认被修改的位置在0.$ $\color{Red} ...
分类:
其他好文 时间:
2020-05-01 19:05:00
阅读次数:
70
树状数组 资料借鉴: "https://www.luogu.com.cn/problemnew/solution/P3374" 适用范围 单次查询时间复杂度: O(logN) 区间和、区间异或和、区间乘积和静态RMQ 支持单点、区间修改 形式 红点是树状数组,白点是原信息数组 对于树状数组中的 每一 ...
分类:
编程语言 时间:
2020-05-01 18:55:28
阅读次数:
74
线段树 线段树(Segment Tree)是一种基于分治思想的二叉树结构,在区间进行信息统计。比区间划分的树状数组通用 1.线段树的每个节点代表一个区间。 2.线段树有唯一的根节点,即代表整个区间的结点。 3.线段树的叶节点代表一个长度为 1 的元区间。 4.对于内部节点 $[l,r]$ (非叶节点 ...
分类:
其他好文 时间:
2020-05-01 18:31:57
阅读次数:
51
LINK: "简单树" 以后我再不认真读题 我TM活该退役 又因为没认真读题多调了20min.时间珍贵啊。 题目最后让ans%n 我没取模 自闭ing. 还是挺有意思的题目。求x到区间[L,R]的所有点的距离。 这个还是一个非常经典的问题。需要把答案的式子列出来。 $\sum_{i=L}^R(dis ...
分类:
其他好文 时间:
2020-04-30 21:00:27
阅读次数:
67
题意:在一个二维平面上 有三种操作 1.添加一个点 2.删去一个点 3.询问严格在(x, y)右上的点 先取最左 然后最低的 题解:先把x离散化 然后用线段树维护横坐标为x的最大值 同样把每个x开一个set 就可以处理添加和删除操作了 询问(x, y) 就是在横坐标大于x的区域 求第一个最大值大于y ...
分类:
其他好文 时间:
2020-04-29 21:45:20
阅读次数:
48
"题面" 题解 提供两种方法 线段树分治 将一个物品可以购买的时间区间打到线段树上 考虑对于每一个点如何算贡献 从线段树的根开始做 01 背包 向下递归时记得撤销不同区间的影响 这样每一次询问只会算 $log(t)$ 次, 每一个物品, 只会在 $log(t)$ 段区间中被计算 每次计算的复杂度是 ...
分类:
其他好文 时间:
2020-04-28 20:27:52
阅读次数:
63