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

摘要:题意 "题目链接" Sol 直接拿set维护$li$连续段。因为set内的区间互不相交,而且每个线段会被至多加入删除一次,所以复杂度是对的。 cpp include define Pair pair define MP make_pair define fi first define se seco 阅读全文
posted @ 2019-03-24 19:08 自为风月马前卒 阅读(432) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol yy出了一个暴躁线段树的做法。 因为题目保证了 $a_i + k_i define Pair pair define MP(x, y) make_pair(x, y) define fi first define se second define int long lon 阅读全文
posted @ 2019-03-18 09:29 自为风月马前卒 阅读(611) 评论(0) 推荐(2)
摘要:题意 "链接" Sol 势能分析。 除法是不能打标记的,所以只能暴力递归。这里我们加一个剪枝:如果区间内最大最小值的改变量都相同的话,就变成区间减。 这样复杂度是$(n + mlogn) logV$的。 简单的证明一下:如果没有加的话,每个节点会被除至多log次, 总会除4nlogn次,每次区间加会 阅读全文
posted @ 2019-03-14 11:49 自为风月马前卒 阅读(391) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 昨天没想到真是有点可惜了。 我们考虑每个点作为最大值的贡献,首先预处理出每个位置$i$左边第一个比他大的数$l$,显然$[l + 1, i]$内的数的后继要么是$i$,要么在这一段区间中。那么可以对这段区间$+1$,然后每次查询$[i k + 1, i]$的最大值即可 c 阅读全文
posted @ 2019-03-06 10:00 自为风月马前卒 阅读(389) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol ~~TJOI怎么全是板子题~~ 对时间开个线段树,然后就随便做了。。。。 cpp include using namespace std; const int MAXN = 1e6 + 10; int mod; template inline A mul(A x, B y 阅读全文
posted @ 2019-03-02 10:00 自为风月马前卒 阅读(364) 评论(0) 推荐(1)
摘要:题意 "题目链接" Sol 线段树板子题都做不出来,真是越来越菜了。。 根据题目描述,一个合法区间等价于在区间内的颜色没有在区间外出现过。 所以我们可以对于每个右端点,统计最长的左端点在哪里,刚开始以为这个东西有单调性,但事实并不是这样。。 我们统计出对于每个颜色最优的位置$r_i$和最左的位置$l 阅读全文
posted @ 2019-02-27 11:18 自为风月马前卒 阅读(372) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 题解好神仙啊qwq。 一般看到这种考虑最大值的贡献的题目不难想到单调数据结构 对于本题而言,我们可以预处理出每个位置左边第一个比他大的位置$l_i$以及右边第一个比他大的位置$r_i$ 那么$(l_i, r_i)$会产生$p1$的贡献 $[l_i + 1, i 1]$和$ 阅读全文
posted @ 2019-02-26 09:03 自为风月马前卒 阅读(437) 评论(1) 推荐(0)
摘要:题意 "题目链接" Sol 这题好毒瘤啊。。 首先要观察到几个性质: 1. 将最小值旋转到根相当于把右子树变为祖先的左子树,然后将原来的根变为当前最小值 2. 上述操作对深度的影响相当于右子树不变,其他的位置 1 然后就可以做了,把询问离线之后离散化一下,建一棵权值线段树表示每个值对应的深度 同时用 阅读全文
posted @ 2019-02-25 21:15 自为风月马前卒 阅读(392) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 首先猜一个结论:对于每次询问,枚举一个起点然后不断等到某个点出现时才走到下一个点一定是最优的。 证明不会,考场上拍了3w组没错应该就是对的吧。。。 首先把数组倍长一下方便枚举起点,然后就是一个单调队列的模型了。整理一下我们需要求的东西就是这个 $$n 1 + \min_{ 阅读全文
posted @ 2019-02-22 11:33 自为风月马前卒 阅读(259) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 说一个后缀自动机+线段树的无脑做法 首先建出SAM,然后对parent树进行dp,维护最大次大值,最小次小值 显然一个串能更新答案的区间是$[len_{fa_{x}} + 1, len_x]$,方案数就相当于是从$siz_x$里面选两个,也就是$\frac{siz_x ( 阅读全文
posted @ 2019-02-18 07:34 自为风月马前卒 阅读(282) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 我的做法比较naive。。首先manacher预处理出以每个位置为中心的回文串的长度。然后枚举一个中间位置,现在要考虑的就是能覆盖到i 1的回文串中 中心最靠左的,和能覆盖到i+1中 中心最靠右的,算一下答案取个max。 线段树维护一下区间min, max。标记永久化炒鸡 阅读全文
posted @ 2019-02-14 11:15 自为风月马前卒 阅读(317) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 别问我为什么发两遍 ~~就是为了骗访问量~~ 这个题的线段树做法,,妙的很 首先一个显然的结论:位置$i$能被看到当且仅当$\frac{H_k}{k} mx_{rs}$,那么右孩子的答案为0。 否则考虑右孩子的左孩子的贡献,如果$mx_{rs_{ls}} mx_{ls}$ 阅读全文
posted @ 2019-02-07 19:45 自为风月马前卒 阅读(318) 评论(0) 推荐(0)
摘要:题意 "题目链接" 单点修改,区间mod,区间和 Sol 如果x mod ,那么 x % mod 即得易见平凡, 仿照上例显然, 留作习题答案略, 读者自证不难。 反之亦然同理, 推论自然成立, 略去过程Q.E.D., 由上可知证毕。 然后维护个最大值就做完了。。 复杂度不知道是一个log还是两个l 阅读全文
posted @ 2019-02-02 09:14 自为风月马前卒 阅读(398) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 显然整个序列的形态对询问没什么影响 设权值$ =s$的有$k$个。 我们可以让这些数每次都被选择 那么剩下的数,假设值为$a_i$次,则可以$a_i$次被选择 一个显然的思路是每次选最大的C个 那么只需要判断$\sum a_i =(c k) s$即可 权值线段树维护一下 阅读全文
posted @ 2019-01-31 09:27 自为风月马前卒 阅读(356) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 正经做法不会,听lxl讲了一种很神奇的方法 我们考虑如果满足条件,那么需要具备什么条件 设mx为询问区间最大值,mn为询问区间最小值 1. mx mn = (r l) k 2. 区间和 = mn len + $\frac{n (n 1)}{2} k$ 3. $\text{ 阅读全文
posted @ 2019-01-30 19:35 自为风月马前卒 阅读(418) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol (真后悔没打这场EDU qwq) 首先把询问离线,预处理每个数的$pre, nxt$,同时线段树维护$pre$(下标是$pre$,值是$i$),同时维护一下最大值 那么每次在$(1, l 1)$内查询最大值,如果最大值$ = l$,那么说明合法 但是$pre$可能会有相同 阅读全文
posted @ 2019-01-06 17:18 自为风月马前卒 阅读(409) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 直接上动态开节点线段树 因为只有一次询问,所以中途不需要下传标记 cpp include define LL long long using namespace std; const int MAXN = 8e6 + 10, INF = 1e9 + 10; templat 阅读全文
posted @ 2019-01-03 16:44 自为风月马前卒 阅读(303) 评论(0) 推荐(1)
摘要:题意 "题目链接" Sol 一个显然的思路是维护最大最小值以及最大最小值的覆盖标记。 https://paste.ubuntu.com/p/WXpBvzF6Y2/ 但实际上因为这题只需要输出最后的操作序列,那么我们只维护最大最小值的覆盖标记即可。 也就是对于每一个节点,把本层的最大最小值下传之后清除 阅读全文
posted @ 2019-01-03 15:30 自为风月马前卒 阅读(263) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 后缀自动机+线段树 还是考虑通过每个前缀的后缀更新答案,首先出现次数只有一次,说明只有$right$集合大小为$1$的状态能对答案产生影响 设其结束位置为$t$,代表的最短/最长后缀的位置为$l, r$(l在r的右边) 那么对于区间$r l$内的$x$位置,可以用$t x 阅读全文
posted @ 2018-12-14 16:50 自为风月马前卒 阅读(361) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 紫色的线段树板子题??。。。 阅读全文
posted @ 2018-12-07 08:09 自为风月马前卒 阅读(391) 评论(0) 推荐(1)

Contact with me