随笔分类 - A-数据结构-线段树
摘要:题目链接 题目解析 唔,首先有一个比较显然的大概是级别复杂度的做法,就是暴力修改,然后两次算出直径。 (不过这没有什么用就是了 因为有修改,我们尝试把树下下来,放到序列上,用线段树维护。 树链剖分? 不,太麻烦喏,我们知道欧拉序这个东西是可以办到的,并且我们之前就用它的性质求过$l
阅读全文
摘要:题目链接 碎碎念 刚开始:这怎么是个黑题啊,就是一个线段树而已啦。 然后,这道题我断断续续调了两天。 所以说,不要立得太早。 题目解析 如果题目没有说选段不相交,而是只有一段的话,那就直接求最大子段和。 但是这道题可以选段的话,就相当于我们可以在最大子段和里断开处(
阅读全文
摘要:题目链接 题目解析 查询操作看起来有点麻烦,但完全可以用二分的思路。 只需要记录下左右儿子有多少个连续的空房间就可以判断起点在左边还是右边了。 当然,还要考虑区间合并,所以又是喜闻乐见的类似于维护最大子段和的方法。 维护这样一些域值: 该区间内连续的最大空房间数 包含左端点
阅读全文
摘要:题目链接 题目解析 我们发现译者在题面里加了一句非常有趣的话: 但是不保证端点所在的区间不重合 嘿嘿,到了。 我们进行分类讨论,如果,那么事情就变得简单起来了: 的最大后缀++的最大前缀 然后那玩
阅读全文
摘要:题目链接 题目解析 呐,是一道非常有意思的线段树的题呢(奇怪的语气 仅仅只是比GSS1多了一个去重的要求,思维方式就完全不一样了呢(更奇怪的语气 咳咳 像GSS1那样简单粗暴地维护是无法处理“重复”这个限制的,我们需要用一种不同的方式来处理,我也是看了题解才知道怎么做
阅读全文
摘要:题意简述 你有一个长度为的排列。将和两个位置的数字交换的条件是:并且 你可以进行无数次交换操作,输出操作后能够得到的最小的字典序的排列。 分析 首先,第一步的转化就很不容易想到。 就是我们可以把数和下标进行调换。 定义反
阅读全文