数据结构 线段树
文章平均质量分 81
saucyJack
外科
展开
-
poj 1151 Atlantis(线段树+离散化+扫描线)
题目链接:http://poj.org/problem?id=1151折腾了一下午的题...具体解释见代码注释。#include#include#include#include#includeusing namespace std;const int INF=0x3f3f3f3f;const int maxn=100005;int n,num;double y[ma原创 2016-02-29 17:24:24 · 269 阅读 · 0 评论 -
HDU 4288 Coder(线段树+离线处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4288维护一个序列an,有以下三种操作:一、在序列中添加元素x二、在序列中删除元素x三、计算序列中下标i%5=3的元素和在写解题报告之前先废话几句关于线段树的姿势问题:之前一直习惯于结构体姿势的线段树,后来看了notonlysuccess的线段树总结,开始采用数组原创 2016-07-13 16:27:37 · 1061 阅读 · 0 评论 -
Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake(线段树+dp)
官方题解:首先,我们计算每个蛋糕的体积: vi=π∗hi∗r2i现在,考虑序列 v1,v2,v3,…,vn :问题的答案是这个序列中递增子序列的最大和。我们怎么样解决它?首先去掉小数,我们可以定义一个新的数组 a1,a2,a3,…,an,ai=vi/π=hi∗r2i们考虑 dpi是以 ai结束的序列和的最大值且 dpi=max(ai,maxj这个问题的答案就是: π∗m原创 2016-03-02 22:56:52 · 366 阅读 · 0 评论 -
[tyvj1432] 楼兰图腾(线段树)
传送门http://begin.lydsy.com/JudgeOnline/problem.php?id=2895题意(题目有点乱):在完成了打鼹鼠之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。西部314在楼兰古城的下面原创 2016-07-24 17:16:12 · 1380 阅读 · 0 评论 -
poj 2481 Cows(线段树)
题目链接http://poj.org/problem?id=2481题意:区间包含的问题,也就是在二维笛卡尔坐标系中求一个顶点的左上方顶点中满足yj-xj>yi-xi的顶点的个数思路:线段树的单点更新区间查询问题。求左上方的顶点个数,首先将所有坐标按照y降序x升序的方式进行排序。这样每次插入一个结点,必然满足yi>=yi-1,xi线段树中需要维护在1-x中已经存在的点的原创 2016-07-13 18:49:16 · 235 阅读 · 0 评论 -
hdu 5475 An easy problem (线段树)
传送门http://acm.hdu.edu.cn/showproblem.php?pid=5475题意:给定一个x,初值为1有以下两种操作:1、乘以k2、除以第k次操作的所乘的值线段树单点更新问题,查询的时候只需要输出v[1]的值即可。具体看下代码就好了。另外,这题xjb暴力可以卡时过掉,亲测。(其实本来并不想写这个题解,这题真的是An easy原创 2016-07-24 22:27:40 · 318 阅读 · 0 评论 -
[Usaco2003 Open]Lost Cows(线段树)
题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=2875类似于poj上的一道题,具体记不得了。算是线段树的一道基础题吧,单点更新问题。sum[rt]记录前面所有的空闲位置的数目sum[rt]=sum[rt从后往前进行插入,每次插入之后记录插入的位置,并做一个标记,第一个数应该为最终未标记的那个数,然后原创 2016-07-16 21:50:38 · 469 阅读 · 0 评论 -
[Usaco2008 Feb]hotel旅馆(线段树)
题目链接http://begin.lydsy.com/JudgeOnline/problem.php?id=2879线段树区间更新,区间查询问题。维护以下四个域:sum:该区间所有位置shulmx:该区间从左端点开始最大连续的空闲位置数rmx:该区间从右端点开始最大连续的空闲位置数mx:该区间最大连续的空闲位置数显然,递归部分为:mx[rt]=maxt(mx原创 2016-07-17 17:05:09 · 260 阅读 · 0 评论 -
hdu 5726 GCD(2016 Multi-University Training Contest 1线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5726题意:给出一组序列a1,a2...an,Q次询问,每次给出l,r ,求出所有满足gcd(l,l+1,...,r)=gcd(l',l+1',...r')的区间个数。线段树区间查询问题。利用线段树在logn时间复杂度内求出所有gcd[l,r]的值,并保存在数组里,最后做离线处理原创 2016-07-19 19:31:05 · 268 阅读 · 0 评论 -
HUSTOJ 2867: 火车票(线段树)
题目链接http://begin.lydsy.com/JudgeOnline/problem.php?id=2867(sb没读看清题wa了一下午...)线段树区间更新区间查询问题,需要lazy优化一下。这道题需要判断请求是否能被满足,即涉及到线段状态的询问。当要求被满足的时候要减去相应线段上的座位数,因此涉及到线段的动态修改。用 seat 这个域来记录线段[a,b]上的座位原创 2016-07-16 17:02:57 · 557 阅读 · 0 评论 -
hdu 5700 区间交 (线段树+枚举)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5700题意:给定序列a1,a2...an以及m个区间,从m个区间中选出k个区间使k个区间相交的部分和最大。思路:预处理前缀和。按照r从小到大l从大到小的顺序将所有区间排序,用线段树维护区间第k小。然后枚举区间的右端点,求出当前第k小左端点,然后计算差值即可。#include原创 2016-07-23 23:03:22 · 294 阅读 · 0 评论 -
poj 2750 Potted Flower(线段树+动态规划)
题目链接:http://poj.org/problem?id=2750(思考了很久也没做出来,最终还是默默去看了题解....)思路:sum:表示区间的和maxNum:表示区间最大值minNum:表示区间最小值lmax:表示从区间左端开始的连续最大子序列rmax:表示从区间右端开始的连续最大子序列lmin:表示从区间左端开始的连续最小子序列rmin:表示从区间原创 2016-02-11 11:03:17 · 357 阅读 · 0 评论 -
poj 2886 Who Gets the Most Candies?(线段树+反素数)
#include#include#include#include#includeusing namespace std;const int INF=0x3f3f3f3f;const int maxn=500010;int T,n,k;int a[maxn],loc;char name[maxn][15];int antiPrime[]={1,2,4,6,12,24,36,原创 2016-02-10 12:00:15 · 213 阅读 · 0 评论 -
poj 2777 Count Color(线段树+lazy优化+位运算)
题目链接:http://poj.org/problem?id=2777读完题观察一下数据范围,因为之前做过hdu上一道类似的线段树+lazy优化的题目,所以很容易想到lazy,不过最后还是超时了,在Query操作中遍需要历到所有的节点,这样的做法会超时,还是需要继续用lazy优化,加上位运算是为了统计颜色数。具体解释一下位运算的部分:因为T的大小只有30,每个颜色用2^C表示,最多2^30原创 2016-02-08 19:11:16 · 279 阅读 · 0 评论 -
poj 2828 Buy Tickets(线段树)
题目链接:http://poj.org/problem?id=2828线段树单点更新问题。从后往前插入,因为最后一个插入某位置的数是确定的。之后每个节点用sum记录该区间的空位置数,如果左区间空位置数比要插入位置大,更新左区间,否则更新右区间,并且pos要减去左区间空位置数。(感觉想到这一点就会比较容易,否则有一种无从下手的感觉。。。)#include#include#原创 2016-02-06 22:08:30 · 185 阅读 · 0 评论 -
poj 2528 Mayor's posters(线段树+离散化)
题目链接:http://poj.org/problem?id=2528(RE了不知道多少发,又接连WA了好几发..Debug了一下午...)题意:在墙上贴海报,每个人都可以贴一张海报,长度不限,海报之间可以相互覆盖,问最后能看到多少张海报(不一定是全部看见)。这道题的数据范围很大,用线段树不可能把所有建立那么多节点,可以把区间当成点,离散化优化空间。在区间离散化的时候不原创 2016-02-06 18:09:09 · 196 阅读 · 0 评论 -
poj 3321 Apple Tree(dfs序+线段树)
题意:给出一个多叉树(不一定是二叉),每个树上有一个苹果,有n-1条边,m次操作操作有两种:一:每次操作使该节点的苹果从有到无或从无到有,每个节点最多有一个苹果二:查询该节点的子树上共有多少个苹果思路:先用dfs序给所有节点标号(相当于映射成线性的),然后用线段树维护,单点更新和区间查询。#include #include #include #include #原创 2016-04-28 10:50:49 · 254 阅读 · 0 评论 -
Vijos 1448校门外的树(线段树)
传送门:https://vijos.org/p/1448题意:查询一个区间内被修改的次数。思路:线段树单点更新,区间查询。利用括号序列的方法,更新区间[a,b]时,点a记录左括号数,点b记录右括号数,查询区间[a,b]时,即为b之前(包括b)的左括号数-a之前的右括号数。#include using namespace std;#define lson rt<<1,l,mid原创 2016-05-25 17:53:56 · 1157 阅读 · 0 评论 -
Vijos1083 小白逛公园(线段树+动态规划)
题意:给出一个序列,每次操作修改一个数值或者查询一个区间内最大连续子序列的和。思路:求和部分利用分治就好了,但是在求区间和的时候注意考虑,如果同时向左向右查询,最后结果不一定是左右相加,这里要特殊处理一下。关于线段树的姿势,用结构体会比较好处理。#include using namespace std;#define lson rt<<1,l,mid#define rson r原创 2016-05-26 23:54:07 · 542 阅读 · 0 评论 -
poj 2985 The k-th Largest Group(线段树+并查集)
题目链接http://poj.org/problem?id=2985题意:有N只猫,刚开始每只猫各自在不同的集合,现在给出M个操作,有两种操作: 1.把第i只猫和第j只猫所在集合合并。 2.查找第i大的集合内有多少只猫。思路:操作一,集合合并很容易想到并查集。操作二,如果每次合并之后进行查找直接遍历一遍,效率O(n^2),很容易超时。所以可以考虑原创 2016-07-20 20:48:05 · 275 阅读 · 0 评论