随笔分类 -  数据结构

摘要:首先考虑容斥 我们计算出所有没有点在其中的矩形,然后用所有矩形减去这些矩形即可 然后考虑如何计算没有点在其中的矩形 采用扫描线的思想,从上向下一行一行扫,假设我们扫到的行编号是$a$,然后考虑如果左右的列端点是$[l,r]$,那么这一行向上至多能扩展几个矩形呢? 显然,我们要找到区间$[l,r]$中 阅读全文
posted @ 2019-06-25 16:56 lleozhang 阅读(284) 评论(0) 推荐(1)
摘要:前置技能:曼哈顿距离转切比雪夫距离 曼哈顿距离:已知两点$A(x_{1},y_{1})$,$B(x_{2},y_{2})$,则其曼哈顿距离为$|x_{2}-x_{1}|+|y_{2}-y_{1}|$ 切比雪夫距离:已知两点$A(x_{1},y_{1})$,$B(x_{2},y_{2})$,则其切比雪 阅读全文
posted @ 2019-06-25 14:13 lleozhang 阅读(207) 评论(0) 推荐(0)
摘要:数据范围很重要!!! 首先观察数据范围,发现我们要修的桥的数量只能是一座或两座,因此我们直接讨论即可 对于在河的一侧的人家,显然花费是一定的,直接累计即可 对于在河两侧的人家,显然过河的花费是一定的,直接累计即可 接下来讨论的所有人都在桥的两侧 首先我们假设只有一座桥,位置为$x$,设对于第$i$个 阅读全文
posted @ 2019-06-25 10:33 lleozhang 阅读(160) 评论(0) 推荐(0)
摘要:首先显然是并查集了 每次连边就是合并两个集合,最后会形成很多连通块,是个森林的结构 考虑在连边的时候加入一个权值表示这条边是第几次被加入图中的,那么每次查询的答案即为$x$到$y$路径上权值最大值 由于并查集按秩合并的复杂度是$O(log_{2}n)$,因此合并时直接按秩合并,查询时暴力向上跳即可 阅读全文
posted @ 2019-06-20 16:14 lleozhang 阅读(110) 评论(0) 推荐(0)
摘要:线段树维护概率好题 设状态$f(i)$表示从$i$走到终点的概率 不妨令起点为$1$,终点为$n$ 那么有转移:$f(i)=(1-p(i))f(i-1)+p(i)*f(i+1)$ 移项,得: $p(i)[f(i+1)-f(i-1)]=f(i)-f(i-1)$ 令$g(i)=f(i)-f(i-1)$ 阅读全文
posted @ 2019-06-04 20:08 lleozhang 阅读(284) 评论(0) 推荐(0)
摘要:一道看似是期望,其实与期望关系并不是特别大的题... 首先分析一下题意: 虽然题目中提到的是边,但事实上完全可以把每一条边的贡献放进左端点上(因为无论从哪个方向经过这条边都是计算左端点的代价) (题目中的提示多么明显啊!!!收费站显然是按点收费嘛...) 因此,在修改区间$[l,r]$的边权时,我们 阅读全文
posted @ 2019-05-30 21:20 lleozhang 阅读(189) 评论(1) 推荐(0)
摘要:极其神的一道题 首先看到:环上问题并不好做,所以我们按套路拆环之后扔到序列上 接下来,我们来分析一下这个游戏的最优策略 最优策略一般有两种表述,这里一并给出 ①:在原地等到某一个时间点从某一个起点开始走,不停留地恰好走完一圈达到结束,取所有可行方案中最小值 ②:从某一个点为起点开始走,对每个点如果没 阅读全文
posted @ 2019-05-21 19:35 lleozhang 阅读(179) 评论(1) 推荐(0)
摘要:一道用线段树维护单调栈的典型问题 首先不难把问题转化成一个斜率模型,设任意一栋楼坐标为$x_i$,高度为$y_i$,那么这栋楼的“斜率”即为$\frac{y_{i}}{x_{i}}$ 那么不难发现,题目要求的是一个斜率上升的序列,而且必须从前向后依次选择 那么首先考虑暴力,不难发现,暴力每求一次是$ 阅读全文
posted @ 2019-05-21 19:00 lleozhang 阅读(176) 评论(1) 推荐(0)
摘要:一道乱搞的题... 题意:给你两个字符串,每次操作步骤如下:从前向后扫描整个字符串,对于每一位都有两种选择,一种是保持原来的字符不变,另一种是把这一位上的字符变成和前一位一样(注意是操作后的前一位),问你至少需要多少次操作才能将第一个字符串变成第二个字符串,如果不可能输出-1 题解: 看到网上所有人 阅读全文
posted @ 2019-05-12 19:55 lleozhang 阅读(151) 评论(0) 推荐(0)
摘要:cdq分治板子题 这篇主要介绍一下cdq分治 顾名思义,cdq分治是一种分治算法(废话) 但是它与普通的分治算法不同:普通的分治算法将问题分解后只需解决子问题,然后回溯统计即可 但是cdq分治需要处理分解后左右区间之间互相的影响 因此变得更加毒瘤 首先简化一下题意: 有 n 个元素,第 i个元素有  阅读全文
posted @ 2019-04-30 16:15 lleozhang 阅读(151) 评论(0) 推荐(0)
摘要:和上一题很像,而且这题直接给出了单点修改和区间查询,所以还是两棵线段树容斥即可 阅读全文
posted @ 2019-04-30 15:35 lleozhang 阅读(182) 评论(0) 推荐(0)
摘要:动态点分治裸题 首先介绍一下动态点分治:就是带修改操作的点分治(废话) 操作涉及单点查询和区间修改 那么首先应该想到线段树 但是怎么操作呢? 首先,修改一个点时的影响范围可以分为上下两部分:一部分在自己的子树内,另一部分通过自己的父节点传上去或传到其他子树内 那么为了使这种操作复杂度尽可能低,我们用 阅读全文
posted @ 2019-04-30 15:33 lleozhang 阅读(183) 评论(0) 推荐(0)
摘要:题目描述:这里 一道非常好的题 由于强制在线,我们必须要用一些数据结构来处理 考虑分块:将整个序列分块,块内部分预处理,块外部分暴力处理 对于每个块,计算出以这个块的左端点为端点,向右枚举这个块以后的所有点,然后记录下这样一个区间的最大异或值 然后每次查询的时候直接调用即可 阅读全文
posted @ 2019-04-26 21:24 lleozhang 阅读(231) 评论(0) 推荐(0)
摘要:今年省选题... 表示当时还没学可持久化trie,所以打60分暴力走人... 现在学了可持久化字典树,就可以搞一搞了嘛! 首先看到题目描述,很容易想到首先搞出异或前缀和,然后建起可持久化字典树 然后考虑一个问题:怎么找出每次的最优区间呢? 因为只有给出一个区间,我们才能利用可持久化trie去跑最大异 阅读全文
posted @ 2019-04-26 21:16 lleozhang 阅读(128) 评论(0) 推荐(0)
摘要:题目描述:这里 可持久化字典树裸题,可以作为模板使用 首先介绍一下可持久化字典树 可持久化字典树,顾名思义,就是一种可持久化的数据结构,常用于处理异或问题 我们看一下题目,发现要求一个最大异或和,但是这个最大异或和很特殊,有一个区间的限制 首先,对于异或和问题,我们一般利用异或的前缀和性质,把一个区 阅读全文
posted @ 2019-04-26 20:59 lleozhang 阅读(193) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-10-20 11:21 lleozhang 阅读(0) 评论(0) 推荐(0)
摘要:非常好的一道题,是线段树的常见玩法 将字符串转化为1~26个数 对区间开一棵线段树,用两个数组分别维护区间中1~26每个数的个数以及一个区间覆盖标记,表示这个区间是否被某一个值覆盖了 在每次排序时,首先查出这个区间中1~26每个数出现的次数,然后因为是排过序的,所以相等的数排完序之后一定是连续的一段 阅读全文
posted @ 2018-10-17 14:05 lleozhang 阅读(241) 评论(0) 推荐(0)
摘要:这应该暂时是个终结篇了... 最后在这里讨论LCT的一个常用操作:维护虚子树信息 这也是一个常用操作 下面我们看一下如何来维护 以下内容转自https://blog.csdn.net/neither_nor/article/details/52979425 对于一个点x,如果我们对x进行access 阅读全文
posted @ 2018-09-18 18:47 lleozhang 阅读(149) 评论(0) 推荐(0)
摘要:这一篇重点探讨LCT的应用 例:bzoj 2631 tree2(国家集训队) LCT模板操作之一,利用SPLAY可以进行区间操作这一性质对维护懒惰标记,注意标记下传顺序和如何下传 例:bzoj 3282 luogu 3690 link-cut-tree 模板 模板题,用SPLAY维护即可 注意判断加 阅读全文
posted @ 2018-09-18 18:20 lleozhang 阅读(201) 评论(0) 推荐(0)
摘要:前三篇好像变成了SPLAY专题... 这一篇正式开始LCT! 其实LCT就是基于SPLAY的伸展操作维护树(森林)连通性的一个数据结构 核心操作有很多,我们以一道题为例: 例:bzoj 2049 洞穴勘测 要求:加边和删边,询问连通性 其实如果没有删边,裸跑并查集似乎就可以搞定 但由于存在删边,并查 阅读全文
posted @ 2018-09-18 18:05 lleozhang 阅读(179) 评论(0) 推荐(0)

levels of contents