线段树
hqwhqwhq
有梦想就不累
展开
-
HDU 5124 树状数组+map操作
看到这道题毫无疑问就是线段树做,在2个小时的时间卡死在这道题了。。。一直觉得会超内存,后来看了题解才知道自己真是笨的可以。。。题目做的太少的缘故吧。。。这道题正好是点更新,果断放弃了线段树,用树状数组来搞(结果到最后也没有更新,反正趁机又复习了一下树状数组),第一次用map,感觉真是好用啊。。。下面是ac代码: #include #include #include #include #i原创 2014-11-30 01:10:09 · 375 阅读 · 0 评论 -
HDU 5700区间交(百度之星2B)
分析:按左端点排序,暴力枚举左端点,寻找这个左端点右边最右端被覆盖>=k>=k次的位置,那么这个长度就是以当前节点为左端点的最大的和。 那么就是一个区间覆盖+更新查询操作,用一颗线段树就可以维护。 复杂度:o(nlogn)o(nlogn)代码:#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #in原创 2016-05-24 23:02:49 · 940 阅读 · 0 评论 -
HDU 5692 Snacks (百度之星2A)
分析:题意就是根节点到ii子树上所有点的最大值,并且这棵树上的点权可修改。 那么维护所有点到根的和,如果修改一个uu节点,只会改变根到uu子树上点的和。把树用dfsdfs序遍历一下,把树变成一个序列,修改节点就变成了序列的区间修改,找最大值也变成了区间找最值。一棵线段树搞定了。 复杂度:o(mlogn)o(mlogn)代码:#pragma comment(linker, "/STACK:1024原创 2016-05-24 22:30:50 · 597 阅读 · 0 评论 -
HDU 5603 the soldier of love (线段树)
分析:很经典的区间覆盖问题,给nn个线段,问mm个区间[L,R][L,R],共完全覆盖多少条不同的线段?如果要完全覆盖,那么l>=L,r<=Rl>=L,r<=R,如果这个时候我们把区间加入线段的序列,按照右端点rr来排序,用一颗线段树来维护所有的左端点,那么就是一个线段树的插入+查询操作。此题离线做就可以了。代码:#include <bits/stdc++.h>using namespace std原创 2015-12-26 23:34:13 · 458 阅读 · 0 评论 -
CodeForces 594D REQ(树状数组)
分析:第一反应是用莫队来写,这样每次查询的复杂度是o(n∗n−−√)o(n*\sqrt{n}),设MM是a[i]a[i]中最大的数,那么每一次修改的复杂度是o(logM)o(logM),那么总的复杂度是o(n∗n−−√∗logM)o(n*\sqrt{n}*logM),这样的复杂度给人的感觉应该是要TT了,交上去确实也T了,如果nn是10410^4级别应该就没什么问题了。感觉这个可以作为莫队算法在一类原创 2015-11-27 12:38:53 · 805 阅读 · 0 评论 -
CodeForces 605D Board Game(树状数组)
分析:找所有比(a,b)(a,b)小的数,可以先以找第一个数aa比小的所有集合中,第二个数比bb小的集合,肯定不能两次sortsort,可以用线段树+setset来搞定这件事情,线段树的坐标为aa的值,每个节点存的东西为一个setset集合,所有第一个数比aa小的集合,然后要找第二个数比bb小的集合,只需要在setset里面找就好了,这个时候时间复杂度:o(nlognlogn)o(nlognlogn原创 2015-12-19 23:58:26 · 1052 阅读 · 0 评论 -
HDU 5517 Triple (2015沈阳站I题&&二维树状数组)
题意:给一个nn个二元组:<a,b><a,b>,给mm个三元组:<c,d,e><c,d,e>。如果b=eb=e那么可以合并二元组,三元组,得到一个新的三元组:<a,c,d><a,c,d>。设所有的二元组,三元组组合后得到的新的三元组的集合是CC。 求CC集合中满足条件的三元组的个数。条件:设这个三元组为uu,在这个集合中找不到任何一个元素,使得改元素中每一个数都大于等于uu中对应的成员。分析:学习原创 2015-11-09 09:24:29 · 1573 阅读 · 0 评论 -
BNUOJ 24253 (弱校联盟第7天E题)
这道题比赛的时候并没有AC,赛后看别人博客学会的,其实我一开始的思路还是比较像的,这道题看到的第一眼想到了网络赛的那个单点修改的,因为Mod不是质数,但是题目说了单点除的数在前面一定会出现一个乘这个数,所以连线搞就好了,然后这题并不能这样做。然后我就想着把Mod质因数分解,如果Mod = p1 * p2 * … Pn这种,所有质数的指数都是1的话,这个时候直接维护每一个质数的模的乘积,然后最后答案用原创 2015-10-08 11:53:09 · 415 阅读 · 0 评论 -
HDU 5489 Removed Interval(2015合肥站网赛1006,DP+树状数组)
当时写的时候并不会,一直想不通一个问题,每次删除的区间从L,R->L+1,R+1的时候,如何维护整个剩余序列的LIS。太弱。。。。 赛后才搞懂这个问题,就是一个dp的问题吧。 dp1[i]表示以num[i]开头的LIS。 dp2[i]表示以num[i]结尾的LIS。 dp[i]表示以分割出来的第二段num[i]为开头的LIS+第一段中的序列的最大值 我们设删除的区间长度为d 那么dp[i原创 2015-09-28 21:18:35 · 634 阅读 · 0 评论 -
多校第4场1012
理解题意以后会发现时比较简单的线段树,理解题意以后首先应该想到一个贪心,就是再寻找最终答案的第i个数时,饿哦们要尽量使这个数尽可能大。那么我们找[1,pos[i]+1]这个区间中已经组队的位置的最大值,记为l,然后找[l+1pos[i]+1]之间未被找过的最大的数。(这里组队的意思是可以详见程序,并不是被找过了)。然后注意一下细节,是一个比较好维护的线段树,复杂付就是线段树的复杂度o(nlogn)原创 2015-07-31 23:10:06 · 350 阅读 · 0 评论 -
HDU_5372 树状数组 (2015多校第7场1004)
比赛的时候没做出来,看了题解发现,没有正确理解一个条件,每次插入线段的长度是递增的!!!也就是不可能出现横跨要查询区间的情况。那么记录 #include #include #include #include #include #include #include #define ll long long #define FOR(i,x,y) for(int i = x;i < y;原创 2015-08-12 11:31:19 · 296 阅读 · 0 评论 -
POJ_1151 扫描线+离散化+线段树
学线段树的时候学的扫描线(虽然早就看过了,一直没敲过,还是懒),现在来补一道题: 因为题目给的矩形的坐标是浮点型的,所以毫无疑问要离散化,我们以y轴坐标来建立线段树(当然也可以以x轴,这样的话扫描线是上下方向的了),然后Line表示扫描线的下一个位置。求面积的就是ans+=(line[i].x-line[i-1].x)*tree[1].cnt。其实说白了扫描线就是一个区间操作的线段树:不过节点存原创 2015-05-04 14:28:13 · 471 阅读 · 0 评论 -
HDU_2227 求不减子序列的个数(树状数组+DP)
题目的意思比较明确,就是求不减子序列的个数。那道题目很容易想到的是dp来写,DP的地推公式就是 dp[i] = sum{dp[j] | j 这个样子复杂度就是o(n^2),肯定过不了,我们最多能接受的复杂度是o(n*log(n)),因为这又是一个区间和的问题,我们很容易想到用树状数组来写,由于s[i]太大,先进行离散化以后就可以做了,之前的dp转移方程能想到的话,那么树状数组也就随手写了。。原创 2015-05-03 16:56:36 · 432 阅读 · 0 评论 -
POJ3321 线段树,树状数组 建树经典题
这道题的意思是求一个结点的子树和(包含这个结点),操作只有两个,查询,和单点修改。容易想到用线段树来维护,怎么构建线段树是个问题。这道题正好学习了一下,dfs来遍历一遍,那么每一颗子树对应的新的结点的值都是连续的,我们遍历返回这个子树的最大值最小值,也就是要查找的范围。这道题在poj上提交有点小问题,用习惯了vector,居然被t掉了。。。换成了手写的邻接表就能过。。。下面上代码,一开始用的线段树原创 2015-04-01 23:54:11 · 688 阅读 · 0 评论 -
POJ_3667 线段树+lazy (线段树经典题)
这道题的意思是原创 2014-11-06 15:45:03 · 521 阅读 · 0 评论 -
CSU 1811 Tree Intersection
题意:一棵树,每个节点有一种颜色,现在删去一条边,求这个树分成两部分,这两部分的共有颜色个数。分析:枚举每一棵子树所有存在的颜色的节点个数,看看有没有超过这种颜色再整个树中的个数,就是答案。 就是一个子树的合并操作,合并并不需要每一个子树都建立一个节点,只需要找出不同颜色最多的那个子树,在这个子树上进行合并就可以了。这个样子每一次最多暴力了u.size()/2u.size()/2,那么总的复杂度就原创 2016-09-07 12:42:34 · 707 阅读 · 0 评论