
线段树
文章平均质量分 82
accelerator_2016
闪电闪电,好久不见
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
poj 1151 Atlantis(线段树+离散化+扫描线)
题目大意: 在一个平面上有n个矩形,他们可能有部分或全部相互重叠,问矩形的总覆盖面积是多少。解题思路: ①用一条直线从左向右扫描,每碰到一条矩形的边,就计算当前直线上被矩形覆盖的长度,同时总覆盖面积 += 当前覆盖长度*当前直线到下一条边的距离。碰到矩形左边时,可能使被覆盖长度增加,碰到右边时,可能使长度减少。 ②因为一条直线上的一段线段可原创 2016-05-12 20:04:37 · 413 阅读 · 0 评论 -
poj 3321 Apple Tree(线段树)
题目大意: 有一棵树,有n个节点,开始时每个分叉点有1个苹果,现在有m个操作,Q x代表查询x节点及x节点的子节点的苹果总和,C x代表将节点x的状态翻转,有苹果变成没苹果,没苹果变成有苹果。解题思路: 从节点1开始,进行一次深搜,根据遍历时间为每个节点编号,进入一个新节点时时间加1,离开时,时间标为从上一个节点离开的时间。那么每个节点的进入时间和离开时间就原创 2016-05-13 00:03:35 · 436 阅读 · 0 评论 -
poj 3264 Balanced Lineup(简单线段树)
题目大意:输入N个数和Q个查询,每次查询区间[L,D]中的最大数和最小数的差。题解:用线段树记录区间的最大值和最小值,输出相减的结果即可。#include #include using namespace std;struct node{ int l,r; int minN,maxN;};node tree[200005];int n,q,a[50005],l,r原创 2016-05-04 19:26:19 · 347 阅读 · 0 评论 -
hdu 1823 Luck and Love(二维线段树)
hdu 1823 Luck and Love(二维线段树)原创 2016-05-16 20:35:56 · 351 阅读 · 0 评论 -
hdu 3577 Fast Arrangement(线段树+lazy)
题目大意: 一列火车可以坐k个人,有n个乘客按顺序上车,每个乘客要乘坐的区间是[ai,bi],如果乘客要乘坐的区间上有一站火车上人是满的,则这个乘客不能乘车,输出可以乘车的乘客序列。 抽象一下就是,存在一个上限k,有q个区间,如果区间[ai,bi]中的最大值小于k,则给这个区间加1,输出i,否则什么都不做。解题思路: 将题目抽象后就是一个基原创 2016-05-07 23:49:20 · 404 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers(线段树+lazy)
题目大意: 有n个数字和q个操作,操作分两种,一种是查询区间[a,b]的和,另一种是给区间[a,b]每个元素增加c;解题思路: 因为单点增加会超时,所以使用lazy的思想来减少更新次数,提高效率。 我写的程序中的inc中的数字还没有加到区间和sum中,这一点跟普通的lazy有一点不同,push_down和push_up的操作也直接写原创 2016-05-08 00:18:37 · 397 阅读 · 0 评论 -
poj 2528 Mayor's posters(线段树+区间离散化)
题目大意: 有一面墙,墙上铺着瓷砖,有n张海报,每张海报是从第a块瓷砖到第b块瓷砖,从第一张海报开始贴,贴到第n张海报的时候,问有多少张海报没有被完全覆盖。解题思路: 从最后一张海报开始反着贴,如果当前要贴的区间没有完全被覆盖则当前这张海报可以被看见,答案加1。 由于瓷砖有10000000块,直接使用线段树,空间耗费过大,所以使用离散化分解原创 2016-05-08 00:52:20 · 429 阅读 · 0 评论