随笔分类 -  基础数据结构——线段树

摘要:题面 "CF1083C Max Mex" 题解 首先我们考虑,如果一个数x是某条路径上的mex,那么这个数要满足什么条件? 1 ~ x 1的数都必须出现过. x必须没出现过。 现在我们要最大化x,那么也就意味着我们要找到一条路径使得这个都出现过的前缀尽可能长。 第二个条件可以忽略,因为如果第1个条件 阅读全文
posted @ 2019-03-05 00:46 ww3113306 阅读(209) 评论(0) 推荐(0)
摘要:[TOC] 题面 2.12 题解 大概还是挺妙的? 首先基础分和连击分互不干扰,所以可以分开统计。 基础分的统计比较简单,等于: $$A \sum_{i = l}^{r} p_i$$ 连击分的统计就比较复杂了,因为是求期望,根据期望的线性性,我们可以先算出$f_i$表示每个音符的期望连击分,再计算整 阅读全文
posted @ 2019-02-12 20:55 ww3113306 阅读(206) 评论(0) 推荐(1)
摘要:~~~题面~~~ 题解: 一开始翻网上题解看了好久都没看懂,感觉很多人都讲得不太详细,所以导致一些细节的地方看不懂,所以这里就写详细一点吧,如果有不对的or不懂的可以发评论在下面。 首先有一个比较明显的50分贪心: 先把d排好序,然后按从小到大的顺序贪心的给每个点选值,同等条件下优先编号大的,于是越 阅读全文
posted @ 2018-10-28 22:04 ww3113306 阅读(673) 评论(2) 推荐(1)
摘要:~~~题面~~~ 题解: 观察到字母只有26个,因此考虑对这26个字母分别维护,每个线段树维护一个字母,如果一个线段树的某个叶节点有值,表示当前叶节点所在位置的字母是现在这个线段树代表的字母。 那么对于每一个操作,我们已经知道最后排好序之后肯定是按aaaabbbbccccddd……这样的序列排下去的 阅读全文
posted @ 2018-10-25 00:54 ww3113306 阅读(475) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 首先题目要求删除一些颜色,换个说法就是要求保留一些颜色,那么观察到,如果我们设ll[i]和rr[i]分别表示颜色i出现的最左边的那个点和最右边的那个点,那么题目就是在要求我们选出的区间要满足区间[l, r]内所有颜色的max(rr[i]) <= r,并且min(ll[i]) 阅读全文
posted @ 2018-10-20 14:57 ww3113306 阅读(275) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 之前写的splay,,,然而一直没调出来,我感觉是某个细节想错了,,然而已经重构4次代码不想再写splay了。于是今天尝试了线段树的解法。 首先因为每次出列之后的变化都是将当前行左移,然后将最后一列上移,所以最后一列不适合和其他的行放在一起处理。 因此对于每行的前m - 1 阅读全文
posted @ 2018-10-09 15:33 ww3113306 阅读(359) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: ,,,考场上看到这题,没想到竟然是省选原题QAQ,考场上把它当数学题想了好久,因为不知道怎么处理有些数没有逆元的问题。。。。知道这是线段树后恍然大悟。 首先可以一开始就建出一个长度为n的操作序列,初始值都是1,表示一开始默认是1乘上n个1,因为乘1也就相当于没乘。 对于操作 阅读全文
posted @ 2018-10-08 09:24 ww3113306 阅读(141) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 在考场上打的这道题,出人意料的很快就打完了?! 直接用线段树,维护几个东西: 1,lazy标记 : 表示区间赋值 2,mark标记:表示区间翻转 3,l1:前缀最长连续的1的子段长度 4,l0:前缀最长连续的0的子段长度 5,m0:区间内最长的全为0的子段的长度 6,r0: 阅读全文
posted @ 2018-09-09 19:24 ww3113306 阅读(200) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 一栋楼是否已经被前面的楼房遮挡住,可以利用斜率来判断。 因此将原序列转化为斜率。 然后直接用线段树维护一下每个区间最多能看见多少楼房即可。 在更新区间的时候需要在线段树上二分,因为左区间是肯定可以取的,然后设左区间的最大值为k, 那么右区间的贡献就是大于k的最长上升子序列, 阅读全文
posted @ 2018-09-04 13:48 ww3113306 阅读(201) 评论(0) 推荐(0)

知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议进行许可。