随笔分类 - 线段树
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2482 [算法] 线段树维护历史最值 时间复杂度 : O(NlogN) [代码]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/877/problem/E [算法] 首先求出这棵树的DFS序 一棵子树的DFS序为连续的一段 , 根据这个性质 , 用线段树维护区间中1的个数即可 时间复杂度 : O(NlogN) [代码]
阅读全文
摘要:[题目链接] https://codeforces.com/contest/914/problem/D [算法] 显然 , 当一个区间[l , r]中为d倍数的数的个数 <= 1 , 答案为Yes , 否则为No 线段树简单维护即可 , 详见代码 , 时间复杂度 : O(NlogN ^ 2) [代码
阅读全文
摘要:[题目链接] https://codeforces.com/contest/920/problem/F [算法] 显然 , 一个10 ^ 6以内的数在经过最多6次操作后就会变为1或2 , 这是因为一个数的因子个数是根号级别的 用筛法预处理10 ^ 6以内每个数的因数个数 , 用线段树维护即可 , 修
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4592 [算法] 对于操作1 , 我们首先查询区间[l0 , r0]中有多少个1 , 然后二分求出最大的x(x <= r1)使得[l1 , x]中0的个数 <= [l0 , r0]中1的
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3306 [算法] 若没有换根操作 , 那么“查询子树最小值”就可以用DFS序 + 线段树解决 进一步地 , 可以发现换根后 , 造成影响的点在原根到新根的路径上 , 根据这个性质 , 问
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1858 [算法] 用线段树维护 : 1. 区间中1的个数 2. 左端点向右延伸最长连续1的长度 3. 右端点向左延伸最长连续1的长度 4. 左端点向右延伸最长连续0的长度 5. 右端点向
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2588 [算法] 如果我们能知道“u到v这条路径上权值<= k的数的个数” , 那么就可以通过二分的方式求出答案 进一步地 , u到v路径上权值<= k的数的个数 = u到根节点路径上权
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1803 [算法] 首先 , 一棵子树的DFS序必然为连续的一段 通过这个性质 , 我们将一个树上的问题转化为了一个序列上的问题 可持久化线段树可以解决该问题 , 不再赘述 时间复杂度 :
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3585 [算法] 两种做法 : 1. 莫队 , 时间复杂度 : O(Nsqrt(N)) (sqrt表示开根号) 2. 可持久化线段树 , 我们只需在第i棵线段树上维护每个数最晚出现的时间
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3932 [算法] 首先 , 我们可以将(Si , Ei , Pi)转化为在Si处加入Pi , 在(Ei + 1)出删除Pi 建立可持久化线段树 , 维护每秒出现任务的个数和优先级的和 ,
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3524 [算法] 首先离线 , 将询问按右端点排序 如果我们知道[l , r]这个区间中[L , mid]中的数有多少个和[mid + 1 , R]中的数有多少个 , 则可以通过二分的方
阅读全文
摘要:[题目链接] http://poj.org/problem?id=2104 [算法] 考虑离线 , 将询问按右端点排序 对于每个询问(l , r , k) , 若我们知道区间[l , r]中 <= x的数有多少个 , 就可以通过二分解决 进一步 , 我们可以将区间[l , r]中 <= x 的数的个
阅读全文
摘要:[题目链接] https://www.luogu.org/problemnew/show/P3919 [算法] 可持久化线段树模板 详见这篇文章 : https://www.cnblogs.com/RabbitHu/p/segtree.html [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2678 [算法] 首先不难想到如下DP : 记f[i]表示前i本书的高度和最小值 显然 , 有状态转移方程 : f[i] = min{ fj + max{hj+1 , hj+2 , ..
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3747 [算法] 首先 , 预处理nxt[i]表示下一个和第i天放映同样电影的是哪一天 枚举左端点 , 不妨计算以每个点为右端点所能获得“好看值”的总和 , 当左端点右移一位时 , [i
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1103 [算法] 树链剖分 时间复杂度 : O(NlogN ^ 2) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2836 [算法] 树链剖分 时间复杂度 : O(NlogN ^ 2) [代码]
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1969 [算法] 首先离线 , 将删边操作转化为加边操作 不妨首先将这张图按边-双连通分量(e-DCC)缩点 , 缩点后形成了一棵树 树链剖分 + 线段树即可 时间复杂度 : O(Nlo
阅读全文
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4653 [算法] 首先将区间按长度排序 那么 , 满足条件的一定是一段连续的区间 , [Li , Ri] , [Li+1,Ri+1] ... [Lj , Rj] 我们不妨枚举每一个L ,
阅读全文

浙公网安备 33010602011771号