线段树
Cifer
这个作者很懒,什么都没留下…
展开
-
HDOJ 1166 敌兵布阵 (线段树)
题目链接:~( ̄▽ ̄~)(~ ̄▽ ̄)~ 哎~ 不会树状数组郁闷........╮(╯Д╰)╭ code: #include typedef struct { int l, r, count; }node; node tree[4*50005]; void Init(int root, int left, int right) { int m = (left+righ原创 2012-04-07 19:41:41 · 472 阅读 · 0 评论 -
POJ 2528 Mayor's posters (线段树+离散化)
题目链接:ヽ(ˋ▽ˊ)ノ 哎~网上看了老久,才知道怎么离散化,郁闷,建树前需要离散化点, 用p[i][2]来存储每个点离散化前的信息, 用结构体num来存储每个点的具体信息 code: #include #include #include typedef struct { int num, id , left;//该点的数值, 为哪条线段的, 左端点还是右端点原创 2012-04-09 19:26:32 · 420 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers
~~~题目链接~~~ 思路:线段树, 更新区间求区间。 code: #include #include #include #define N 100002 //typedef __int64_t __int64; using namespace std; int n = 0, q = 0; __int64 t[4*N], cv[4*N]; void build原创 2012-11-07 17:20:19 · 449 阅读 · 0 评论 -
HDOJ 1698 Just a Hook
~~~题目链接~~~ 题目大意:现给出一个区间, 刚开始时区间中的每个点对应的值为1, 现在更新q次, 把x-y区间的点的值全跟新为z, 现在求出整个区间点的值的和。 思路:线段树, 跟新每个区间时只更新到覆盖的区间, 下回更新时再通过cv【】数组往下更新。 code: #include #include #define N 100002 using names原创 2012-11-06 21:25:55 · 491 阅读 · 0 评论 -
POJ 2828 Buy Tickets
~~~题目链接~~~ 题目大意:有一群人要插队, 现在给出组要插队的人要插到第几个人后, 和该人对应的编号, 求最后这个队列从头到尾所对应的编号。 思路:一开始用线性表和链表试了下都超时了, 无赖想不出怎么用线段树, 可耻的看了解题报告, 换一个思路, 从最后一个人往回推,就有思路了。 code: #include #define N 200002 u原创 2012-11-03 20:17:17 · 689 阅读 · 0 评论 -
HDOJ 1394 Minimum Inversion Number (逆序数对)
~~~题目链接~~~ 题目大意:给出一个序列, 要求求出这个序列和他经过环移后, 逆序数对中最小的一个。 思路;用线段树求逆序数, 每当加入一个数x时, 就求x~n-1有多少个数出现过, 出现多少就是多少逆序数对。 求出一组序列后, 环移后的逆序数对可以用公式求出, 环移用STL实现 code: #include #include #include #def原创 2012-11-03 15:46:50 · 502 阅读 · 0 评论 -
HDOJ 2795 Billboard
~~~题目链接~~~ 题目大意:在一个高为h, 宽为w的面板上贴上n张海报, 每个海报的高都为1, 每张海报能尽可能的贴在高度最高的地方, 当同一个高度有多个地方可以贴海报时,贴在最左边, 现在求每个海报能贴在哪个高度。 思路:用线段树进行2分区间, 把高度看成区间。区间的高度为最小的(h, n), 注意n == 1时; code: #include #defin原创 2012-11-03 14:55:08 · 502 阅读 · 0 评论 -
HDOJ 1754 I Hate It
~~~题目链接~~~ ps:这题数据太水了, 看以前错的代码都能过, 改了下应该是对的了。 #include #include #define N 2000002 #define max(a, b) a>b? a:b int n = 0, m = 0, ans = 0, Y[4*N], num[N]; void update(int c, int l, int原创 2012-10-20 16:02:35 · 404 阅读 · 0 评论 -
POJ 2104 K-th Number (划分树)
~~~题目链接~~~ 题目大意:给出n个数,现在要求求出区间中的第k大值 思路:划分树模版 #include #include #define N 100002 using namespace std; struct node { int num[N], val[N]; }t[1000];//记录每层的划分 int n = 0, m = 0, a原创 2012-09-28 20:06:51 · 1495 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers
题目链接:(—_—) zZ 题目大意:给出n个点, 现在更新[i...j]区间的每个点的值, 求[k....l]区间的这些点和的值。 资料1 code:每回只更新到要更新的区域, 不往下更新, 下回要查询或更新时才往下更新。 #include struct node { __int64 c, sum; int l, r; }tree[10000原创 2012-07-23 21:17:54 · 675 阅读 · 1 评论 -
POJ 2352 Stars
题目链接:(—_—) zZ 题目大意: 有n个星星, 现在分别给出它们的坐标(按y递增的顺序给出),每个星星有一个等级(该星星的等级是x坐标和y坐标都不大于该星的星星数),先要求出每个等级的星星有多少个 思路:用线段树或树状数组, 由于是按y递增的坐标给出的, 新加入一个点只需判断区间【1,x】多少个点, 并更新后面包含他区间的点的个数 Ps:第一道树状数组, 资料链接资原创 2012-07-21 10:39:10 · 1015 阅读 · 0 评论 -
POJ 1151 Atlantis
~~~题目链接~~~ 题目大意:给出每个矩阵的左下角坐标和右上角坐标,求出所有矩阵的面积 思路:在x轴上划分, 在x轴方向求每相邻的两个点所在的矩阵面积。现在的关键就是求每两个点所在的矩形的高如何求, 用线段树来更, 这题最好不要用点树, 叶子节点为区间为1的节点, 这样方便求出y轴上的长度, 看代码吧 #include #include using原创 2012-10-11 19:59:55 · 458 阅读 · 0 评论