
线段树
acunstoppable
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
待写
线段树 区间合并 CDOJ844 POJ3667 HDU3308 HDU1540原创 2018-01-28 22:50:06 · 206 阅读 · 0 评论 -
POJ2991 线段树 区间更新 计算几何
题意:吊车由n条不同长度的线段组成,每条线段首尾相接。初始状态:每条线段垂直与x轴。每次操作改变第s条和(s+1)条的逆时针角度为a,询问每次操作后第n段末尾的坐标。 思路: 1、将每段线段都视为向量,则每次询问的结果实质上是向量和。 2、每次改变第s段和第(s+1)段的相对角度,实际上是改变了从第(s+1)段至第n段的绝对角度,则可以通过线段树进行区间更新。然而,题目给定的是第s段和第(s+原创 2017-08-14 15:33:38 · 268 阅读 · 0 评论 -
HDU1698 线段树 区间更新
题意:区间更新及求和。 思路:模板题。#include <iostream> #include <cstring> using namespace std; const int MAXN = 100000 + 10; int sum[MAXN << 2], add[MAXN << 2]; void PushUp(int rt) { sum[rt] = sum[rt << 1] + sum[原创 2017-08-11 10:25:25 · 260 阅读 · 0 评论 -
POJ3468 线段树 区间更新
题意:区间更新及求和。 思路:模板题。#include <iostream> #include <cstring> using namespace std; typedef long long ll; const int MAXN = 100000 + 10; ll arr[MAXN], sum[MAXN << 2], add[MAXN << 2]; void PushUp(int rt) {原创 2017-08-11 10:56:07 · 304 阅读 · 1 评论 -
POJ2528 线段树 区间更新 离散化
题意:依次将给定区间染色并覆盖之前的颜色, 问最后能看见几种颜色? 思路: 1、首先li <= ri <= 1e7, 若直接建树则必定MLE \ TLE,此时便需要用到离散化处理,也是我新学到的知识。 下面是我学习离散化处理的两个网址: http://www.matrix67.com/blog/archives/108 http://blog.youkuaiyun.com/gokou_ruri/arti原创 2017-08-11 19:16:27 · 243 阅读 · 0 评论 -
POJ2828 线段树 单点更新
题意:将vi依次插入pi+1位置上, 求最后形成的队列。 思路: 1、逆序插入, 因最后插入的必定能得到想要的位置; 2、线段树节点存储对应区间所余空位, 每插入一个vi, 对应区间空位便减一; 3、可以理解成:将每一次插入视为所余空位的最后一次插入。 反思:没能想出“将每一次插入视为所余空位的最后一次插入”这一正确思路。#include <iostream> using namespac原创 2017-08-10 20:59:01 · 262 阅读 · 0 评论 -
HDU2795 线段树 单点更新 区间最大值
题意:有h*w的告示板, 每张通知的规格为1*wi, 通知张贴的位置优先选最上端的位置, 其次选最左的位置, 求每张通知张贴在第几行? 思路:记录每一行所剩长度, 运用线段树维护区间最大值。左子树值大于wi, 则查询左子树, 否则查询右子树。 反思: 1. 思维不够缜密: 刚开始的想法和正解是相同的, 但考虑到h的范围为1e9, 继而否定了自己的想法。 然而忽略了(所需要用到的)h <= n原创 2017-08-09 17:30:25 · 237 阅读 · 0 评论 -
HDU1394 线段树 单点更新 求逆序数
第一次写博客~~题意:给定n, 求0~n-1的数列逆序数。并且, 可以依次将头部元素插入尾部, 求由此生成的n-1个数列逆序数的最小值。 思路: 1. 求逆序数: 每插入一个元素, 查询在其之前出现过且比它大的元素数量, 并在线段树中更新。 2. 求最小值:每将a[i]由头部调到尾部, 逆序数减少a[i], 继而增加n-(a[i]+1)。 反思:思维局限, 逆序数不仅可以从前往后计算(即统计原创 2017-08-09 14:44:48 · 293 阅读 · 0 评论