
线段树
ACM败犬
这个作者很懒,什么都没留下…
展开
-
牛客练习赛 56 D.小翔和泰拉瑞亚(线段树 + 思维)
枚举每一列作为事实魔法后的最低列,将所有覆盖当前枚举列的魔法都实施,然后查询最大值和最小值做差。正确性易证:这些魔法一定会使得最低列更低,若最高列也在魔法范围,最低和最高同时下降相同高度,不影响最终答案,若最高列不在魔法范围,最低列下降而最高列不会下降,答案只会增大。线段不需要重复枚举,每一条线段的作用范围是[L,R],按下标从小到大枚举最低列,每条线段的作用在枚举到L点时加进去,到R + ...原创 2019-12-28 09:56:20 · 202 阅读 · 6 评论 -
gym 101630 L - Laminar Family(树上区间染色 + 树链剖分)
题目大意:有一棵 nnn 个结点的树,有 fff 条简单路径,判断这 fff 条路径任意两条是否满足:1.两条路径不相交2.其中一条包含另外一条先预处理每条路径的长度,按它们的长度从大到小排序,这样处理的作用是当前枚举的路径不会包含其它路径,如果路径所在区间有其它路径,那么必然是被包含在其它路径内或者相交。对路径区间进行染色,对每一条路径判断区间内是否只有一种颜色:即max==minma...原创 2019-10-24 15:41:34 · 254 阅读 · 0 评论 -
2019 南昌网络赛 C. Hello 2019(线段树 + dp)
直接拿 codeforce 750E的代码把字符串和询问都倒过来代码:#include<iostream>using namespace std;#include<stdio.h>#include<string.h>#include<algorithm>#define lson rt << 1,l,mid#defin...原创 2019-09-11 23:51:48 · 248 阅读 · 2 评论 -
Codeforce 750 E. New Year and Old Subsequence(线段树 + dp)
代码:#include<iostream>using namespace std;#include<stdio.h>#include<string.h>#include<algorithm>#define lson rt << 1,l,mid#define rson rt << 1 | 1,mid + 1,...原创 2019-09-11 23:50:04 · 162 阅读 · 0 评论 -
2019 西安邀请赛 E. Tree(树链剖分 + 线段树 + 位运算 + nim博弈)
题目大意:一棵有 n 个结点的树,树根为 1 号点,每个点有一堆石头,数量为 aia_iai,有三种操作:1 s t:将 1 -> s 路径上的石头数量或上 t2 s t:将 1 -> s 路径上的石头数量与上 t3 s t:用 1 -> s 路径上的石头外加一堆数量为 t 的石头玩 nim博弈,判断先手是否能赢操作 1 和操作2 对应两种修改操作操作3:相当于询...原创 2019-09-11 00:23:38 · 186 阅读 · 0 评论 -
Codeforce 1099 F. Cookies(树形DP + 线段树预处理)
题目大意:在一棵有根树上,每个点有 x[i] 个饼干,在第 i 个点吃饼每块饼干要花 t[i] 的时间。现在有两个玩家 a,b,总共有T时间。a 初始在根节点,每次可以沿着树边走向子结点,每次移动都要花费一定的时间,a也可以结束游戏 ,当他结束游戏时,他开始向根结点返回,在返回途中他可以吃饼,但最后必须回到根节点。当 a 移动到 结点 i 时,b 可以选择删掉从 i 出发到其子节点的一条边。...原创 2019-09-03 10:40:17 · 151 阅读 · 0 评论 -
2019 Multi-University Training Contest 6:Snowy Smile(线段树查询最大子段和)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6638题目大意:在二维平面空间有 n 个点,每个点有一个点权 wi,一个边平行于坐标轴的矩形的权值为该矩形内所有点的点权和。问选取一个矩形点权和最大是多少。题解:先将坐标离散化,以x坐标建线段树,枚举y坐标上界和下界,将y坐标位于上下界内的点加入线段树,每次查询线段树最大子段和。#include...原创 2019-08-08 15:22:59 · 172 阅读 · 0 评论 -
*2019 Multi-University Training Contest 2:Longest Subarray(线段树+思维)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6602题解:如果右端点固定,每一种元素可行左端点是两段连续的区间(个数 >=k>= k>=k 和 =0= 0=0),扫描右端点,用线段树维护区间最大值来维护每一个元素左端点的可行区间,在每种元素左端点的可行区间做区间 + 1。更新答案时查找 值为 C的下标最小值(值...原创 2019-08-04 13:44:34 · 164 阅读 · 0 评论 -
蓝桥杯国赛训练营:小白逛公园(线段树维护最大区间子段和)
题目大意:有一个长为n的序列,每次询问[l,r]区间内最大子段和是多大。徒手撸应该能撸出来(我撸不出来)没学过的话写起来还是有点困难的,一点一点看吧。struct ss{ int l,r; //结点维护的区间 int lv,rv,mv,sum; //左起最大连续子段和,右起最大连续子段和,整个区间的最大连续子段和,整个区间的和}tree[maxn << 2];...原创 2019-04-16 20:36:48 · 184 阅读 · 0 评论 -
蓝桥杯国赛训练营:蒜头君的玩具(线段树 or 差分)
题目大意:给一个长为 n 的序列,以及 m 条直线,从中任选三条线,定义ans 为 这三条线都覆盖的点的个数,求这个个数的期望。首先选直线的方案总数是C[m][3],期望就是所有可行的方案的ans 之和 除以 C[m][3]。一开始我是用差分做的,第一眼觉得完全没必要用到线段树,结果哇了,事实上确实可以用差分做,只不过第一次忽略了一些处理。第二次是用线段树做的:考虑用 n 来建树,我们可以维...原创 2019-04-18 11:21:11 · 352 阅读 · 0 评论 -
2018 ccpc final:B. Balance of the Force (枚举)
题目大意:有n个骑士,每个骑士可以加入光阵营或暗阵营,并且获得一个力量,分别为L和D,现在有m对骑士不能在同一个阵营,问力量差值(最大值和最小值的差值)最小是多少?如果不存在阵营满足仇恨骑士不在同一个阵营内,则输出IMPOSSIBLE。解法:首先二分图判定一下是否存在奇环,若存在奇环则输出IMPOSSIBLE。按仇恨关系建边形成的图,注意到一个连通分量只要一个人选定加入哪个阵营,其他人的阵营也...原创 2019-05-06 00:15:42 · 684 阅读 · 0 评论 -
牛客小白赛16:H-小阳的贝壳 (线段树维护带区间修改的gcd)
题目链接:https://ac.nowcoder.com/acm/contest/949/H题目大意:小阳手中一共有 n 个贝壳,每个贝壳都有颜色,且初始第 i 个贝壳的颜色为 colicoli 。现在小阳有 3 种操作: 1 l r x:给 [l,r][l,r] 区间里所有贝壳的颜色值加上 xx 。 2 l r:询问 [l,r][l,r] 区间里所有相邻贝壳 颜色值的差(取绝对值) 的最...原创 2019-07-13 11:24:22 · 221 阅读 · 0 评论 -
ACM-ICPC 2017 西安赛区现场赛 A. XOR(线段树 + 线性基合并)
题目链接:https://nanti.jisuanke.com/t/A1607题目大意:初始有一个序列a,有q个询问,每次询问 k | [l,r] 区间内子集异或的值的最大值是多少。题解:因为是k | [l,r]的子集异或运算,k为1的位可以不用考虑,只需要考虑k为0的位异或最大是几,做法是线段树套线性基,因为线性基也具有区间可加性,两个区间的线性基直接暴力合并。(线性基的合并可行性是比较显...原创 2019-07-08 13:13:07 · 604 阅读 · 0 评论