线段树
WePlayDirty
emmmmmmm
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
poj2750 Potted Flower(线段树单点更新)
线段树还可以维护最大连续子序列和啊。。没想到对于这种首尾相接的数列,所求为其中一部分连续子序列的,可以分两种结果讨论(以序列a1,a2,a3,a4,a5为例):要么在序列中间,要么在序列两头1)所求结果子序列没有被分成两段(例如结果为a2,a3,a4);2)所求结果子序列分布在两端(例如a4,a5,a1,a2);对于本题,如果是第一种情况,结果就是(整个序列的最大连原创 2016-07-18 10:57:48 · 2752 阅读 · 0 评论 -
poj2886 Who Gets the Most Candies?
题意:输入n,k表示n个人,第k个第一个离开圆环,之后n行,每行一个名字和一个数字m,表示从这个人开始顺时针(数字大于0)或逆时针(数字小于0)第m个人离开圆环。 每个人离开时会有一个得分,得分=F(离开次序i); F(i)=能整除i的数的个数;求这个人的名字和得分。思路:首先打表枚举[1,500000]的F(i); 然后模拟求这个人的名字,对于[1,n]中原创 2016-07-17 20:48:55 · 2286 阅读 · 0 评论 -
poj2299树状数组解法(转发备忘)
转载:树状数组,具体的说是 离散化+树状数组。这也是学习树状数组的第一题.算法的大体流程就是:1.先对输入的数组离散化,使得各个元素比较接近,而不是离散的,2.接着,运用树状数组的标准操作来累计数组的逆序数。算法详细解释:1.解释为什么要有离散的这么一个过程? 刚开始以为999.999.999这么一个数字,对于int存储类型来说是足够了转载 2015-08-07 15:44:05 · 2141 阅读 · 0 评论 -
线段树详细讲解
原帖出处线段树(segment tree)线段树在一些acm题目中经常见到,这种数据结构主要应用在计算几何和地理信息系统中。下图就为一个线段树:(PS:可能你见过线段树的不同表示方式,但是都大同小异,根据自己的需要来建就行。)1.线段树基本性质和操作线段树是一棵二叉树,记为T(a, b),参数a,b表示区间[a,b],其中b-a称为区间的长度,记为L转载 2015-01-30 10:55:36 · 2872 阅读 · 0 评论 -
poj2528 离散化+线段树区间更新
就是看区间内有多少张不同的海报,唯一的问题是墙太长,需要离散化一下海报的宽度;最好的理解方式就是阅读代码:#include#include#include#include#include#define maxn 500010using namespace std;int _set[maxn*2];bool vis[11000];int fin_ans;void原创 2016-04-28 17:58:21 · 2230 阅读 · 0 评论 -
(多校第一场1004)HDU5726 GCD(区间GCD查询+)
题意:给出n个数,区间为(1,n),查询区间(l,r)的GCD,以及区间(1, n)有多少子区间的GCD等于区间(l,r)的GCD。做法:使用线段树,或RMQ维护区间GCD,并且要预处理出所有可能出现的GCD值 的区间数量。针对固定左端点,一直向右GCD阶梯状减小的特性,大概有两种做法。1)对于某一固定起点(以选定左端点L=i为例),从最右端R开始,二分枚举GCD突变位置pos,这一段阶梯的长度就是R-pos+1,定义INTERGCD(L,R)=区间(L,R)的GCD,则GCD值等于 INTERGC原创 2016-07-21 22:02:04 · 4338 阅读 · 0 评论 -
poj2892&&HDU1540 Tunnel Warfare(线段树)
poj都给hint,D x摧毁x,R恢复最近摧毁的点,Q x查看和x相连的点的个数(未摧毁)。做法:1)训练计划上把这题分到静态二叉检索树上,所以先想到用线段树做,线段树维护每段中被消除点的最大位置和最小位置,摧毁点k就把k添加到位置k,查询k,就查询段[1,k]的中的最大值和[k,n]的最小值,然后相减得到结果。初始化时最大值为0,最小值为n+1,这样在区间如果没有被摧毁的点也能返回正确原创 2016-08-10 14:12:12 · 2308 阅读 · 0 评论
分享