![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
Ranslns
这个人很懒
展开
-
线段树单点更新模板 HDU-1166
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 一共有三种操作:在第i个节点增加j个人在第i个节点减少j个人查询i, j之间的总人数一道线段树单点更新的模板题代码:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define l原创 2017-08-14 09:30:49 · 175 阅读 · 0 评论 -
Jamie and Tree( Codeforces 916E)
题意:给出一个有n个点以及n-1条边的树,进行3个操作: 1. 将x变成整个树的根 2. 将以x,y相对于根的最近公共祖先的为根的那棵子树的所有根节点加上z. 3. 查询以x为根的子树的所有节点的和算法:LCA,DFS序,线段树区间维护解题思路: 首先考虑不对根进行修改,通过对根与询问节点的相对位置关系分析,通过求LCA实现各个操作。由于每一次操作修改的点不确定,原创 2018-01-24 10:49:38 · 468 阅读 · 0 评论 -
HDU - 3974 Assign the task(线段树或暴力)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=3974题意:给出一个公司的组成,当有新任务给某个人的时候, 他的下属也会帮他做, 当有新的任务下达时, 他们会停下原来的工作来做新的工作。输入:T组数据, 每组先输入n, 接下来n-1行 每行输入 u, v 代表v是u的上司, 下一行输入m,接下来m行代表操作, 其中 T x y代表给x新下达了y的任务 ,原创 2017-08-15 11:35:06 · 202 阅读 · 0 评论 -
Count the Colors ZOJ - 1610 (线段树)
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610 题意:将一段[1, n]的区间,对于区间中的某些子区间染成不同的颜色,问染完色以后有多少不同颜色的区间, 例如染完以后区间[1, 4]为1,[5, 6]为2, 故为两段。输入 :n, n个操作, 每一个操作, x, y, z 代表将[x, y]染成z颜色解题思路原创 2017-08-14 10:53:10 · 288 阅读 · 0 评论 -
Tunnel Warfare HDU - 1540(线段树区间合并)
链接;http://acm.hdu.edu.cn/showproblem.php?pid=1540 题意:对于区间[1, n]进行m个操作, 其中 :D x代表x节点被摧毁Q x代表查询从x节点开始向左右共有多少个未被摧毁的连续节点R 代表修复上一个被摧毁的节点解题思路:用线段树表示区间连续长度, 其实和单点更新差不多, 用类似分治的思想解决(分治解决最大连续区间和),详情看代码#incl原创 2017-08-14 11:17:53 · 231 阅读 · 0 评论 -
Can you answer these queries? HDU - 4027(线段树)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027题意:给你一段区间n, 以及[1, n]中的每一个数,两个操作:0, x, y 对于区间[x, y]对每一个数字去开方(向下取整)1, x, y查询区间[x, y]的和解题思路: 考虑到对于一个long long 类型的整数开方不会用多少次就会变成1, 而如果变成1以后还要去开方就会浪费原创 2017-08-14 11:07:18 · 178 阅读 · 0 评论 -
Balanced Lineup POJ - 3264 (线段树单点更新)
链接:http://poj.org/problem?id=3264题意:n个牛m个操作,问你第[i, j]之间最高的牛和最低的牛的高度差是多少解题思路: 保存最大值最小值就可以了, 模板稍微改改就可以代码:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <math.h>#de原创 2017-08-14 10:57:47 · 269 阅读 · 0 评论 -
Just a Hook HDU - 1698 (线段树模板题)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 题意:对于一个区间[1, n], 刚开始的时候每一个点的值都是1,一种操作:(1):将区间[x, y]内的值改为2 或者3。 在输入结束后输出当前[1, n]值的和输入 T(组)接下来T组数据,每组首先输入区间长度n,然后输入m,代表m个操作,每一个操作 x, y, z, z为2或者3也是一道模板原创 2017-08-14 10:36:44 · 180 阅读 · 0 评论 -
Mayor's posters POJ - 2528 (线段树+离散化)
链接:http://poj.org/problem?id=2528 题意:在一个长度不超过10000000的区间内贴海报,因为贴的过程中会有覆盖的问题, 假如第一次贴[1, 4], 第二次贴[2, 6],就会覆盖住[2, 4]部分,问贴完所有海报后能看到多少张海报。解题思路:因为数据量太大,故要对所给出的数据先进行离散化比如(1, 2, 5, 6, 8, 10),离散化以后为(1, 2, 3, 4原创 2017-08-14 10:20:53 · 155 阅读 · 0 评论 -
Physical Education Lessons(【CodeForces】915 E)
【题意】n个点q个询问,对于每一个询问,输入l,r,k,如果k是1,代表[l, r]全变成0, k是2就将[l, r]全变成1。【题解】一眼看去,肯定是维护区间的线段树,然后连范围都没看到。写完以后发现不对,n是1e9,然后想到离散化处理以后用线段树。解法:将点i与点i+1之间的区间大小赋予点i,即点i的权值为点i与点i+1之间的区间大小。然后就可以随便线段树乱写了。注意数据范围,这里好像超了原创 2018-01-19 10:27:36 · 459 阅读 · 1 评论