随笔分类 -  acm竞赛--线段树

摘要:题意:边权树链剖分 ,三种操作 1.CHANGE把第i条边的权值改为a 2.NEGATE把第a个点到第b个点的边的权值全部取相反数 3.QUERY求第a个点到第b个点的最大边权。 分析: 这次是没看板子自己默的树链剖分哈哈 意料之中的出现了错误: 1.链式前向星用的不熟,之前都是vector存边的 阅读全文
posted @ 2019-08-04 20:19 易如鱼 阅读(273) 评论(0) 推荐(0)
摘要:题意: 给定一棵含n个结点的树和树的边权,共有q次操作,分为两种 0 c :求从位置s到c的距离,然后s变成c 1 a b:把第a条边的权值变为b 边权处理一般有两种方案: 1.化边为点 即将所有的n-1条边上都增加一个节点,点权即边权,再有2n-1个节点的新树上进行点权的树链剖分即可 (一般不用 阅读全文
posted @ 2019-08-04 15:20 易如鱼 阅读(303) 评论(0) 推荐(0)
摘要:详解:https://www.cnblogs.com/ivanovcraft/p/9019090.html 树链剖分的本质是序 以尽量走重链为序,使一棵树的结点尽量集中地分解成较少的链,而链作为连续的数据结构是易于维护的 剖分的过程有两遍dfs : dfs1:找出重结点 ,确立各个点的深度 ,这个过 阅读全文
posted @ 2019-08-04 15:03 易如鱼 阅读(228) 评论(0) 推荐(0)
摘要:一个不错的树链剖分文章,码一下: https://www.nowcoder.com/discuss/175445?type=101 阅读全文
posted @ 2019-08-03 16:53 易如鱼 阅读(196) 评论(0) 推荐(0)
摘要:经常有一种题是给你一个图形和二维平面上的一些点 ,问你在最多能圈住几个点 这个时候就是要用线段树+扫描线了 这个东西关键由以下内容构成 : 1.扫描序: 线段树维护的内容一般是每条x轴(或y轴上)在宽度限定范围内最多有几个点,要对点逐一扫描 扫描(updata)之前要根据扫描的顺序(从上到下或从左到 阅读全文
posted @ 2019-07-30 15:09 易如鱼 阅读(390) 评论(0) 推荐(0)
摘要:码一下:https://blog.csdn.net/weixin_44584560/article/details/87115412 #include <bits/stdc++.h> using namespace std; const int N = 100000 + 5; int a[N] ,b 阅读全文
posted @ 2019-07-29 20:46 易如鱼 阅读(226) 评论(0) 推荐(0)
摘要:前几题运用了树状数组的 单点修改+区间查询,一维区间修改+单点查询(差分法),二维区间修改+单点查询(差分法) 这些都是树状数组的常规操作 树状数组还可以通过维护两个数组实现一维的区间修改+区间查询,详见:https://www.cnblogs.com/lcf-2000/p/5866170.html 阅读全文
posted @ 2019-04-11 16:46 易如鱼 阅读(263) 评论(0) 推荐(0)
摘要:题意: 给定长度为n的区间 ,有2个操作: 操作1: 在区间中靠左放k个元素,输出新放入元素中最左边的位置,如果放不下输出 0; 操作2 : 清空 l 到 l+w-1这一段区间的元素 这里有一个状态转移方程(即线段树的上推方式): 线段树区间pos中储存 lcon--从区间左端L最大连续的区间长度 阅读全文
posted @ 2019-03-31 18:19 易如鱼 阅读(307) 评论(0) 推荐(0)
摘要:题意: 给定区间 ,有操作: 0: 对指定区间内元素进行开方 1: 查询指定区间内元素和 一直tle... 因为那个开方操作每次都递归到叶子节点进行了,实际并不需要 增加数学敏感: 开方操作:同指数操作的快速增加一样,开方操作可以使一个数快速减小到1(取整条件下 因此这道题节点的更新可以进行剪枝优化 阅读全文
posted @ 2019-03-28 18:03 易如鱼 阅读(250) 评论(0) 推荐(0)
摘要:n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) 。求出最后还能看见多少张海报。 虽然之前学过离散化,但用的时候就想不起来 emm; 10000个海报 最多有10000个区间 20000个坐标值,远少于10000000,因此采用离散化 阅读全文
posted @ 2019-03-28 13:02 易如鱼 阅读(456) 评论(0) 推荐(0)