随笔分类 -  线段树

Killer Problem(暴力)
摘要:题意:给定一个序列,每次询问l到r之间两个数差的绝对值的最小值。分析:开始以为是线段树离线处理,实际暴力就好!#include #include #include #include #include #include #include #include #include #include #incl... 阅读全文

posted @ 2015-10-25 22:46 积跬步、至千里 阅读(190) 评论(0) 推荐(0)

Permutation
摘要:题意:求1-k的排列中第n大的序列,题目给出n的计算方法:n = si*(k-1)+s2*(k-2)...+sk*0!已知si分析:si的含义是剩下没用的数中第(si+1)大的数,用线段树,0,1表示处理情况#include #include #include #include #include #... 阅读全文

posted @ 2015-10-25 22:44 积跬步、至千里 阅读(219) 评论(0) 推荐(0)

SKYLINE
摘要:题意:n个建筑,给出其左右坐标和高度,有可能发生覆盖,求每个建筑在多长部分是最高的(覆盖度),求各覆盖度之和。分析:线段树,两个懒惰标记same区间是否同一高度、val区间最高高度#include #include #include #include #include #include #inclu... 阅读全文

posted @ 2015-10-25 22:38 积跬步、至千里 阅读(175) 评论(0) 推荐(0)

RMQ with Shifts
摘要:题意:n个数两种操作,1、给出一组位置,使各位置的数循环移动,2、求给定区间的最小值。分析:单点更新,区间最值#include #include #include #include #include #include #include #include #include #include #incl... 阅读全文

posted @ 2015-10-25 22:28 积跬步、至千里 阅读(165) 评论(0) 推荐(0)

Potentiometers
摘要:题意:线段树的单点修改,区间查询#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include... 阅读全文

posted @ 2015-10-25 22:25 积跬步、至千里 阅读(184) 评论(0) 推荐(0)

Fast Matrix Operations
摘要:题意:二维的区间增、改,求区间最值、和值。分析:把二维化为一维,注意懒惰标记。#include #include #include #include #include #include #include #include #include #include #include #include #in... 阅读全文

posted @ 2015-10-25 22:24 积跬步、至千里 阅读(163) 评论(0) 推荐(0)

Frequent values
摘要:题意:n个数q个询问,每次询问区间[i,j]中数出现最多的数的次数,序列是非降序的。分析:相同的数都是相邻的,把每段相同的数,标记起来,每段的标号id,左右边界left,right,数量num,当查询时,由三部分right[i]-i+1、j-left[j]+1、和编号id[i]+1,id[j]-1数... 阅读全文

posted @ 2015-10-25 22:21 积跬步、至千里 阅读(219) 评论(0) 推荐(0)

Ping pong
摘要:题意:n个人的能力值,任意两个人找第三人能力值位于两者之间,组成一场比赛,问一共能组成几场比赛。分析:对于第i个人,BIT求出前面小于它的人数c和后面小于他的人数d,根据乘法原理,c*(n-i-d)+(i-c-1)*d;#include #include #include #include #inc... 阅读全文

posted @ 2015-10-25 22:15 积跬步、至千里 阅读(463) 评论(0) 推荐(0)

HDU 4638-Group(线段树+离线处理)
摘要:题意:给n个编号,m个查询每个查询l,r,求下标区间[l,r]中能分成标号连续的组数(一组内的标号是连续的)分析:我们认为初始,每个标号为一个组(线段树维护区间组数),从左向右扫序列,当前标号,要考虑和他相邻的标号的位置,若前面位置出现了和它相邻的标号,则前面位置组数减一(因为可以合并成一组),查询... 阅读全文

posted @ 2015-08-16 21:06 积跬步、至千里 阅读(197) 评论(0) 推荐(0)

HDU 4630-No Pain No Game(线段树+离线处理)
摘要:题意:给你n个数的序列a,q个询问,每个询问给l,r,求在下标i在[l,r]的区间任意两个数的最大公约数中的最大值分析:有了hdu3333经验,我们从左向右扫序列,如果当前数的约数在前面出现过,那这个约数可能就是最大的答案。所以我们枚举当前数的所有约数,用线段树维护区间最大值,查询序列离线处理保证查... 阅读全文

posted @ 2015-08-16 20:48 积跬步、至千里 阅读(343) 评论(0) 推荐(0)

HDU 3333-Turing Tree(BIT好题)
摘要:题意:给你n个数的序列a,q个询问,每个询问给l,r,求在下标i在[l,r]的区间内不含重复数的和分析:这类题目觉得很好,很练思维,觉得不太好做。用BIT维护和,我们可以从前向后扫一遍序列,当前数在前面已经出现过了,前一个该数的位置上就要减去这个数才保证正确(不重复),但查询区间是随机的,肯定相互影... 阅读全文

posted @ 2015-08-16 20:32 积跬步、至千里 阅读(127) 评论(0) 推荐(0)

POJ 3321- Apple Tree(标号+BIT)
摘要:题意:给你一棵树,初始各节点有一个苹果,给出两种操作,Cx 表示若x节点有苹果拿掉,无苹果就长一个。Qx查询以x为根的子树中有多少个苹果。分析:开始这个题无从下手,祖先由孩子的标号不能确定,就想能不能重新编号,对与一棵树我们以先根序进行编号这就保证了一个子树在一个连续的区间内,然后就是BIT了。#i... 阅读全文

posted @ 2015-08-16 20:13 积跬步、至千里 阅读(136) 评论(0) 推荐(0)

HDU 2227-Find the nondecreasing subsequences(dp+BIT优化)
摘要:题意:给你一个序列a[],求它的不降子序列的个数分析:dp[i]表示以i结尾不降子序列的个数,dp[i]=sum(dp[j])+1(j#include #include #include #include #include #include #include #include #include #i... 阅读全文

posted @ 2015-08-16 19:57 积跬步、至千里 阅读(140) 评论(0) 推荐(0)

HDU 1025-Constructing Roads In JGShining's Kingdom(最长不降子序列,线段树优化)
摘要:分析:最长不降子序列,n很大o(n^2)肯定超,想到了小明序列那个题用线段树维护前面的最大值即可该题也可用二分搜索来做。注意问题输出时的坑,路复数后加s#include #include #include #include #include #include #include #include #i... 阅读全文

posted @ 2015-08-16 17:42 积跬步、至千里 阅读(148) 评论(0) 推荐(0)

HDU 3584-Cube(三维BIT)
摘要:题意:给你三维空间两种操作,给出两顶点坐标,把它们确定范围(长方体)内的数全部取反、查询给定点的值。初始全部为零分析:有了前面的知识,用BIT实现区间更新单点查询,再用多维实现即可#include #include #include #include #include #include #inclu... 阅读全文

posted @ 2015-08-16 17:34 积跬步、至千里 阅读(164) 评论(0) 推荐(0)

POJ 1195- Mobile phones(二维BIT)
摘要:题意:矩阵上的单点更新,范围求和#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include... 阅读全文

posted @ 2015-08-16 17:26 积跬步、至千里 阅读(241) 评论(0) 推荐(0)

HDU 1892-See you(二维BIT)
摘要:题意:最多1000*1000的方格,各方格开始有一本书有四种操作:对指定方格把书拿走或向里面放书,从一个方格那一定量的书放到另一个方格,查询给定对角线顶点的坐标的矩形范围内包含的书的总数分析:二维BIT,注意方格的书数小于拿书数量的情况#include #include #include #incl... 阅读全文

posted @ 2015-08-16 17:24 积跬步、至千里 阅读(314) 评论(0) 推荐(0)

HDU 4267-A Simple Problem with Integers(多个BIT)
摘要:题意:2种操作1 a b k c 在区间[a,b]中的(i-a)%k==0的位置i上的数+c2 a 查询位置a的值输出每次查询的值分析:开始想到多维的线段树,但比较麻烦,看了题解才知道,用BIT实现区间更新,单点查询,若在区间[a,b]上的数加c就在a位置加c ,b+1位置加-c 这样在查询时sum... 阅读全文

posted @ 2015-08-16 17:14 积跬步、至千里 阅读(150) 评论(0) 推荐(0)

HDU 4325-Flowers(线段树+离散化)
摘要:题意:给出每个花开花的时间段,每询问一个时间点输出该时间点开花的数量分析:线段树的区间更新,单点查询,但发现时间很大,没法存区间,就想到了离散化。离散化就是把要处理的数据统一起来重新标号。#include #include #include #include #include #include #i... 阅读全文

posted @ 2015-08-16 16:55 积跬步、至千里 阅读(101) 评论(0) 推荐(0)

UVA 12532-Interval Product(BIT)
摘要:题意:给n个数字的序列,C v p 把v位上的数字置成p , S l r代表求区间[l,r]各数字相乘得数的符号,对于每个S输出所得符号(’+‘,’-‘,’0‘)分析:开两个数组表示区间负数的个数、0的个数、当数字被改时,更新数组、查询时区间含0符号是0,再根据负数的个数的奇偶判断。#include... 阅读全文

posted @ 2015-08-10 20:14 积跬步、至千里 阅读(149) 评论(0) 推荐(0)

导航