ACM_线段树.数状数组
文章平均质量分 77
_天道酬勤_不忘初心
这个作者很懒,什么都没留下…
展开
-
线段树简介
本文摘自董大神的博客,原文地址如下:点击打开链接1、概述线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,它基本能保证每个操作的复杂度为O(lgN)。2、线段树基本操作线段树的基本操作主要包括构造线段树,区间查询和区间修改。(1) 线段树构造首先介绍构造线段树的方法:让根节点表示区间转载 2015-07-18 14:52:45 · 565 阅读 · 0 评论 -
HDU 1540 Tunnel Warfare(区间合并)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1540题意:给一个村子求直接和间接和它连着的村子有多少个思路:#include #include #include #include #include #include #include #include #include #include #include const原创 2016-04-21 21:22:53 · 226 阅读 · 0 评论 -
POJ 3667 Hotel(区间合并)
题目地址:http://poj.org/problem?id=3667题意:1 a:询问是不是有连续长度为a的空房间,有的话住进最左边2 a b:将[a,a+b-1]的房间清空思路:记录区间中最长的空房间思路:update区间替换,query求满足条件的最左边的一个房间AC代码:#include #include #include #include #include原创 2016-04-21 13:48:38 · 281 阅读 · 0 评论 -
HDU 3308 LCIS(最长连续上升子序列)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3308思路:update单点更新,query求一段区间内的最长连续上升子序列大神地址:http://leehuan.sinaapp.com/acm-icpc/hdoj/465.htmlAC代码:#include #include #include #include #includ原创 2016-04-21 17:33:17 · 382 阅读 · 0 评论 -
HDU 1754 I Hate It(区间最值)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1754思路:updata()单点替换,query()区间最值AC代码:#include #include #include #include #include #include #include #include #include #include #include原创 2016-03-16 21:02:40 · 284 阅读 · 0 评论 -
hihoCoder挑战赛20 (区间最值)
题目地址:http://hihocoder.com/contest/challenge20/problem/1AC代码:#include #include #include #include #include #include #include #include #include #include #include const int inf = 0x3f3f3f3f原创 2016-05-06 21:36:53 · 306 阅读 · 0 评论 -
HDU 1166 敌兵布阵(线段树或数状数组)
题目地址:点击打开链接思路:不要用cin,cout,输入输出,会超时,update(),单点增减,query()区间求和AC代码:#include #includeusing namespace std;int n,sum;int a[50010];struct node{ int l; int r; int value;}tree[50000原创 2015-07-20 16:08:10 · 530 阅读 · 0 评论 -
HDU 1541 Stars
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1541题意:给出n个坐标,先按纵坐标升序,纵坐标相同再按横坐标升序排序,在这个点左下角的个数记做这个数的level值(不严格,纵坐标和横坐标可以相同),求0到n-1的level数是多少思路:update单点更新,query区间求值AC代码:#include #include #inc原创 2016-04-22 18:19:54 · 808 阅读 · 0 评论 -
HDU 2852 KiKi's K-Number(单点更新,求值)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2852题意:0 e 往容器里翻一个数e 1 e 从容器里删除一个数e 2 a k 求第k个比a大的数AC代码:#include #include #include #include #include #include #include #include #incl原创 2016-04-22 17:27:08 · 286 阅读 · 0 评论 -
HDU 3397 Sequence operation(区间合并)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3397思路:原创 2016-05-08 19:38:51 · 281 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1394题意:在序列 { 2, 4, 3, 1 } 中,逆序依次为 (2,1), (4,3), (4,1), (3,1),因此该序列的逆序数为 4,题目给定一个长度为n的数组,每次可以把数组的前m个元素移动到数列的后面,所以共有n种数列,求这n种序列中,逆序数最小的一个思路:(1)从第一种情况,递原创 2016-04-12 17:29:11 · 209 阅读 · 0 评论 -
BZOJ 1798 维护序列 (多校连萌,对线段树进行加乘混合操作)
题目地址:http://www.lydsy.com/JudgeOnline/problem.php?id=1798思路:对一段区间的数进行加乘混合操作,思路还是挺巧的,举个例子sum[rt]为一段区间的和,对区间+x再乘以p(sum[rt]+x)*p=sum[rt]*p+x*p可以写成对这个区间乘以p,每次乘的时候对a[rt]乘p,这个思路很巧AC代码:#include #inc原创 2016-03-31 15:31:12 · 520 阅读 · 0 评论 -
ACM大牛总结的线段树专辑
【完全版】线段树很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时觉得挺自豪的,还去pku打广告,但是现在我自己都不太好意思去看那篇文章了,觉得当时的代码风格实在是太丑了,很多线段树的初学者可能就是看着这篇文章来练习的,如果不小心被我培养出了这么糟糕的风格,实在是过意不去,正好过几天又要给集训队讲解线段树,所以决定把这些题目重新写一遍,顺便把近年我接触到的一些新题更新上去~转载 2015-07-20 14:03:50 · 5095 阅读 · 1 评论 -
ZOJ 1610 Count the Colors(暴力或者线段树)
题目地址:点击打开链接题意:给一段区间,区间长度为0-8000,每组样例的第一个数n为总共刷的次数,接下来n行,每行一个a,b,c,表示[a,b]这个区间内的颜色刷成c,问最后每种颜色的区间有几个,颜色标号按大小排序思路:这道题本意是用线段树,但数据范围较小,暴力也可过,注意的地方有2个(1)必须把初始的数组赋初值为-1,因为赋初值为0,你就不知道这段是初始化的0还是刷上去的0(2)每组数原创 2015-11-07 19:52:11 · 492 阅读 · 0 评论 -
POJ 2828 Buy Tickets(多校连萌,线段树模拟插入)
题目地址:http://poj.org/problem?id=2828题意:给一个队列,第一个数是插在哪个位置上,第二个数这个人的标号,问最后的队列是什么样思路:用线段树倒着插入即可AC代码:#include #include #include #include #include #include #include #include #include #inclu原创 2016-03-29 16:09:27 · 290 阅读 · 0 评论 -
HDU 1556 Color the ball(区间标记或者线段树)
题目地址:点击打开链接参考的大神的代码地址:地址1:点击打开链接 地址2:点击打开链接思路:还是和线段树模板有点区别的,不用记录增量,因为对所有的数据都要查询,树的节点不是保留这一段的和,而是保留这一段增加的次数,便于输出最后每个数据的值,地址一是递归输出,挺厉害的AC代码:#include #includeusing namespace std;struct trees原创 2015-07-18 14:39:54 · 379 阅读 · 0 评论 -
HDU 2795 Billboard(线段树)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2795思路:用数的最下面的节点表示一层(即到最下面一层有n个节点就可以了),并且用这个节点的左或右的区间范围表示层数(子节点的左区间和右区间其实是相同的),这个思路很巧,我也是看了别人的题解才懂的AC代码:原创 2016-03-17 11:17:47 · 289 阅读 · 0 评论 -
数据结构专题——线段树
原文地址:http://blog.csdn.net/metalseed/article/details/8039326线段树转载请注明出处,谢谢!http://blog.csdn.net/metalseed/article/details/8039326 持续更新中···一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉转载 2016-03-04 17:38:06 · 533 阅读 · 0 评论 -
HDU 1698 Just a Hook(线段树)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1698思路:updata()区间替换,query()区间求和先上3篇博客 1:http://blog.sina.com.cn/s/blog_a2dce6b30101l8bi.html 2:http://www.tuicool.com/articles/j6N3eaz 3:http://w原创 2016-03-17 15:16:11 · 277 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers(线段树)
题目地址:http://poj.org/problem?id=3468思路:updata()区间增减,query()区间求和,会超int用long longAC代码:#include #include #include #include #include #include #include #include #include #include #include原创 2016-03-17 16:49:28 · 295 阅读 · 0 评论 -
郑轻校赛总结
2个经验(1)把简单题想成难题,不愿动脑(2)和队友交流太少1882: 蛤玮的魔法思路:用相似求比率,都是泪啊,用三角函数时注意里面要用弧度制AC代码:#include #include #include #include #include #include #include #include #include #include #include const原创 2016-04-18 18:55:30 · 464 阅读 · 0 评论