随笔分类 -  线段树

摘要:操作: 单点更新,区间求和 区间求和:如sum [3,10) 需要对19,5,12,26节点求和即可。 观察可知,左端点为右子节点(奇数)时直接相加,右端点为左子节点(偶数)时直接相加,两边向中间移动并求其父节点。 Refer: Codeforces blog 树状数组解法 所有的奇数位置的数字和原 阅读全文
posted @ 2019-07-27 02:26 demianzhang 阅读(276) 评论(0) 推荐(0)
摘要:A - 一棵简单的线段树 A[1...n]初始全为0. 1. 给两个数p 和 x(1≤p≤n),单点更新 A[p] <- x 2. 给两个数L和R (1≤L<R≤n), L到R区间里这几个数去掉一个最大值和一个最小值后剩下的数的和是多少。用到了max, min, sum B - 一棵普通的线段树 A 阅读全文
posted @ 2018-08-30 21:26 demianzhang 阅读(227) 评论(0) 推荐(0)
摘要:区间修改,区间查询,求和 阅读全文
posted @ 2018-05-05 17:32 demianzhang 阅读(210) 评论(0) 推荐(0)
摘要:题意: 把手臂都各自看成一个向量,则机械手的位置正好是手臂向量之和。旋转某个关节,其实就是把关节到机械手之间的手臂向量统统旋转。 由于手臂很多,要每个向量做相同的旋转操作很费时间。这时就可以想到用线段树的优势正是可以快速地成段更新。和一般的成段更新题目没什么差别,只是通常成段替换、或者成段增加。这时 阅读全文
posted @ 2016-12-12 15:12 demianzhang 阅读(590) 评论(0) 推荐(0)
摘要:题意:给定Q(1<=Q<=100000)个数A1,A2…AQ,以及可能多次进行的两个操作 1)对某个区间Ai……Aj的每个数都加n(n可变) 2)对某个区间Ai……Aj的数求和 分析: 树结点只存和,会导致每次加数时都要更新到叶子节点,速度太慢(O(nlog(n))),这是必须避免的 1.在增加时, 阅读全文
posted @ 2016-11-20 16:52 demianzhang 阅读(184) 评论(0) 推荐(0)
摘要:此题为入门级线段树 题意:给定Q(1<=Q<=200000)个数A1A2…AQ,多次求任一区间Ai-Aj中最大数和最小数的差 #include<algorithm> #include<cstdio> #include<string> #include<string.h> #include<iostr 阅读全文
posted @ 2016-11-20 13:27 demianzhang 阅读(213) 评论(0) 推荐(0)