![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
四维2000
SW2000
展开
-
威海G题gym102798G Caesar Cipher(hash+线段树)
题意:一个数组,两种操作,区间+1,和查询两段子数组是否完全一样。 思路:用线段树维护hash值,但是过程中问题很多,比如这个数组的值最大只能是65535,再加会进位,给人一种错觉是可以unsighed short来自然进位,但这样就无法维护hash值了,所以还需要在线段树里面加上一个删除最大值的,这样复杂度也不会加很多。但是这时候仍然有问题,就是这道题的数据比较强,可以卡掉我一直用的unsighed long long的hash方法,最后还是需要两个大质数,一个作为底数,一个作为模数进行hash,看来之原创 2020-11-09 21:02:57 · 190 阅读 · 0 评论 -
2020牛客多校二H Happy Triangle (STL 线段树)
题意:一个集合可以对其做三种操作,加上一个x,减去一个已有x,给出一个x问时候存在a和b使得abx可以围成一个三角形 分析:看到集合操作马上想到用set,其中可以再用set的指针在map上记录下所以数值之间的差,但这时存在一个问题就是可能存在两个数,这两个数的差满足条件但两个数的和却太小不到x,因此我所用的方法就是提前把所有差都求出来后离散键线段树,线段树上存的是该差中的最大和,这样再动态对每个操作进行修改查询 代码: #include <bits/stdc++.h> #define x原创 2020-09-18 10:17:17 · 221 阅读 · 0 评论 -
CF Edu 81 E Permutation Separation(线段树)
非常巧妙的线段树应用,通过线段树维护“把1-val的值移到最左边需要的花费”,然后将pos从1扫到n-1,每次求下最小值,其中当左边一个都没有时(即把第一个移到右边的费用)做一个特判,所有情况的最小值就是ans。 #include <bits/stdc++.h> #define x first #define y second #define mid (l + r >>...原创 2020-02-01 12:59:25 · 259 阅读 · 0 评论 -
洛谷P5490 【模板】扫描线
半年前就听说过一种名为扫描线的神秘科技,但实际上学过后会发现其实就是一种线段树的用法,其中扫描线的线段树还和普通的线段树有所不同,一个是每个节点实际上是映射1e9的值,其次需要同时维护两棵线段树:flag记录当先节点是否全部被覆盖(只记录最深处的值且不pushup);sum记录当先线段中扫描到的长度(需要pushup但由于每次都是只用访问sum[1]所以不用pushdown)。另外需要注意的另外一...原创 2020-02-01 11:59:17 · 337 阅读 · 1 评论 -
HUD Billboard (线段树)
2795Billboard Problem Description At the entrance to the university, there is a huge rectangular billboard of size h*w (h is its height and w is its width). The board is the place where all possibl...原创 2019-04-16 20:31:55 · 136 阅读 · 0 评论 -
HDU 2871 Memory Control (线段树)
HDU 2871Memory Control 分析: 本题纠结了好多天,又用一下午时间找bug,换思路,终于终于做出来了。极为有毒的一题,相当于把三种线段树类型的题出成了一道,四种操作: ①找出最小的x长度区间并覆盖; ②删除某点x所处的区间; ③找出第x个区间的开始位置; ④清除所有区间; 分析发现: 对于④就是操作多次② 对于②:需要把①的每个区间记录下来,反向操作① 对...原创 2019-06-05 17:21:11 · 175 阅读 · 0 评论