![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
文章平均质量分 79
别忘了最初的自己
天秤座 乐观 低调 执着
展开
-
POJ 2828 Buy Tickets ( 线段树—单点更新 )
题意:很多人(1~200000)在后半夜还在排队,由于天太黑,人们即使插队也不会被人发现,每个人的名字由一个整数代表([0, 32767] )。现在一次给出每个人插入的位置,(0代表第一个,1代表第二个。。。),计算N个人插入队后,队中各个位置都是谁。 分析:正向思考的话,这道题就是最简单的模拟了,传统的双层O(n*n),达到了4*10^10 , 计算机每秒处理复杂度的效率在10^原创 2013-08-27 21:43:43 · 537 阅读 · 0 评论 -
POJ 2352 Stars
题意:按y递增的顺序给出n颗星星的坐标(y相等则x递增),每个星星的等级,等于在它左边且在它下边(包括水平和垂直方向)的星星的数量,求出等级为0到n-1的星星分别有多少个。分析:树状数组或者线段树。//416K 141MS 书状数组#include #include #define MAX 32010int c[MAX] ; //树状数组 int原创 2013-09-05 17:16:34 · 394 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers (线段树—成段覆盖)
题意:给出[1,n]区间内每个点的数值,让你执行下面的操作: 1. C a b w : 区间[a,b]上所有点的数值加上w。 2. Q a b : 输出区间[a,b]上所有点的数值之和。思路:经典线段树。静态建树,成段修改,区间求和。用普通的线段树去做肯定超时,因为成段修改的时候会是o(n)。关键在于用add记录对应区间内所有元素的增量,并对查询函数进行相应的修原创 2013-08-28 00:09:07 · 478 阅读 · 0 评论 -
POJ 2777 Count Color (线段树、lazy思想)
题意:有一个区间,最多有30种颜色。有两种操作,一种是对某一个区间段染上某一种颜色,一种是询问该区间有多少种不同的颜色。思路:线段树的好题,线段树 + lazy思想的经典应用。而且和位运算结合到了一起。因为颜色数量很少,而且父结点的颜色正好是两个子结点颜色的按位或,因此可以用位运算。最后1的个数就是不同颜色的个数。// 4276K 297MS#include #原创 2013-10-05 20:04:50 · 561 阅读 · 0 评论 -
POJ 2299 Ultra-QuickSort
题意:给出长度为n的序列,每次只能交换相邻的两个元素,问至少要交换几次才使得该序列为递增序列。题目本质就是求逆序对了,简单介绍一下。逆序对是指在序列{a0,a1,a2...an}中,若aij),则(ai,aj)上一对逆序对。而逆序数顾名思义就是序列中逆序对的个数。例如: 1 2 3是顺序,则逆序数是0;1 3 2中(2,3)满足逆序对的条件,所以逆序数只有1; 3 2 1中(1,2)(1,3)原创 2013-09-11 22:32:38 · 488 阅读 · 0 评论 -
操作格子(线段树)
问题描述有n个格子,从左到右放成一排,编号为1-n。共有m次操作,有3种操作类型:1.修改一个格子的权值,2.求连续一段格子权值和,3.求连续一段格子的最大值。对于每个2、3操作输出你所求出的结果。输入格式第一行2个整数n,m。接下来一行n个整数表示n个格子的初始权值。接下来m行,每行3个整数p,x,y,p原创 2014-04-12 18:25:34 · 348 阅读 · 0 评论