![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
文章平均质量分 78
查尔斯欢
这个作者很懒,什么都没留下…
展开
-
hdu4630 or hdu4638 线段树离线查询
这两道题手段挺类似的。原创 2014-07-23 20:57:22 · 926 阅读 · 1 评论 -
hdu4893 线段树
线段树水题,但是告诉我一个很重要的事实,64原创 2014-07-30 17:36:14 · 759 阅读 · 1 评论 -
hdu4614 线段树区间更新
很恶心的区间查询更新题目。两个操作,一个是原创 2014-09-05 19:49:54 · 843 阅读 · 0 评论 -
hdu4339 线段树
第一次碰到字符串的线段树,不过还真是水的一逼。直接记录原创 2014-09-05 19:56:55 · 564 阅读 · 0 评论 -
hdu4902 线段树区间更新
时限15s,根本就是怎么水怎么过啊。维护两个标记,一个赋值一个取gcd,原创 2014-08-22 10:45:36 · 644 阅读 · 0 评论 -
hdu4819 线段树套线段树
二维的线段树,每个横向节点都是原创 2014-09-20 11:03:17 · 612 阅读 · 0 评论 -
hdu4027 线段树
线段树。很容易发现一个节点开个七八次方原创 2014-08-28 11:38:50 · 611 阅读 · 0 评论 -
hdu4973 线段树
同4027挺像的,只不过一个翻倍一个开原创 2014-08-28 20:06:39 · 596 阅读 · 0 评论 -
zoj3813 线段树
比赛的时候想到这个公式,可惜对于中间那部分处理不得当,导致要记录的东西太多,最后不了了之。规律原创 2014-09-11 15:36:19 · 646 阅读 · 0 评论 -
hdu5029 树链剖分
这题绝对好题。原创 2014-10-04 16:36:54 · 792 阅读 · 1 评论 -
hdu5107 线段树
代码:#include #include #include #include #include #define ll long long int#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define delf int m=(l+r)>>1using namespace std;int num[66666*4][11原创 2014-11-19 20:02:52 · 744 阅读 · 0 评论 -
hfutoj1300 线段树 区间合并
卡死了好几天,最后居然是因为结构体里原创 2014-05-27 08:41:44 · 695 阅读 · 0 评论 -
hdu4351 线段树 区间合并
这道题目网上很多题解都是错的,原创 2014-05-19 09:33:13 · 760 阅读 · 2 评论 -
hdu2795
线段树题意给一个高为h每行长度为w的广告牌,每次贴长度为Wi高度为1的广告,问该广告能否贴上,如果能,贴在最靠左上的位置并输出第几行,不能则输出-1.题目数据范围特别大,很容易想到要用线段树来解决问题。开数组时,应想到每条广告都占一行的话,最多只需要20W行,所以开数组大小应为广告的条数与广告牌高度两者的较小值的四倍就行,不需要将数组开到爆。然后将线段树每个节点剩余宽度初始化为W,每个原创 2013-09-26 13:22:42 · 927 阅读 · 0 评论 -
hdu1394
线段树题意给定一个序列,可用的操作为将第一个元素移到最后一个,问所有可能形成的序列中逆序数最小为多少。题目简单在每次给定的n个数确定为0~n-1,这样我们只需求出第一个序列的逆序数,然后每次新形成的序列的逆序数可以直接推算出。可是求第一个序列的逆序数时,使用n方的算法对于1000ms的时间显然不够用,于是想到使用n*logn的算法,可以使用线段树实现这一点。设线段树每个叶子节点记录该处原创 2013-09-26 18:39:31 · 1159 阅读 · 0 评论 -
hdu1698
线段树题意:给定一个长度n,初始认为n的单位长度价值为1,以后给定q条命令,每条命令在a和b之间价值变为c,1线段树区间更新,和单点更新相比,多了一个pushdown函数,即从指定节点向下更新。假设每次给定a,b之间更新成c,那么由线段树更新函数时从根节点向下找更新区间的,于是便可利用这一性质,如果在找更新区间的路径上发现了已经更新过的节点,就将此节点向下更新,直至找到需要更新的区间,将此原创 2013-09-28 12:59:19 · 677 阅读 · 0 评论 -
hdu3397
线段树题意比较简单,五种操作,两者查询,三种中前两种可看做一种标记,第三种为一种标记,两种标记存在关系,可以保证每个节点通过标记替换达到只存在一种标记:覆盖标记直接覆盖取反操作,取反操作可以变成对覆盖标记取反。区间合并比较麻烦,需要记录0和1的的左右及最大长度,遇上取反操作直接交换0和1的长度,覆盖标记直接取就是。区间合并时,分三种情况:区间完全在左孩子,区间完全在右孩子,区间在两孩子之间原创 2013-10-22 15:39:41 · 1382 阅读 · 0 评论 -
hdu4578
线段树题意很明确~#include using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int add[444444];int mul[444444];int cha[444444];int sum[4][444444];int n;int ans;void pushup(int原创 2013-10-22 21:13:27 · 916 阅读 · 0 评论 -
poj2886 线段树
线段树题目,思路不难,关键是F(p),很难想清楚是神马,表示看了别人的题意解析才知道神马意思。反素数这玩意果断决定打表了,以后比赛随时带着这玩意得了。另外注意的是,反素数的因子个数不是连续变化的,有可能依次增加好几个因子,这点特别注意下。其他就是依次剔除人了,知道人物当前位置和当前人物长度可轻易推出下次出列的人物位置,依次将人物出列直到答案的值。代码:#include #includ原创 2014-03-12 16:01:45 · 814 阅读 · 0 评论 -
poj2828
线段树题意:先给定一个n,然后依次给出第i个人前面的人数和他价值,让其插队,求最终序列。初学者表示虽然是从线段树专题上看到的这个题,仍然想不到如何建树。。。逆序建树,因为越往后的人位置越确定,最后一个人的前面有多少人是肯定确定的,最后一个人安排好后倒数第二个人的也就确定了,依次类推,直至所有人的位置都确定。首先建树,叶子节点值设为1(代表此处有一个位置),其他节点值为左孩子和右孩子数值之和原创 2013-09-28 23:01:45 · 695 阅读 · 0 评论 -
poj1456 并查集or线段树
本来做并查集专题看到的题目,但是却是用线段树A掉的。。。并查集思路一会研究下,感觉这题用线段树做挺水的。题目给的最后期限,就相当于给了线段树查找范围,在1~d范围内找还有没有空余的点,有的话则占用,更新线段树,单点更新,感觉比较简单。。。#include #include #include using namespace std;#define lson l,m,rt<<1#d原创 2014-03-07 22:28:38 · 1056 阅读 · 0 评论 -
hdu4288 线段树+离线化+离散化
题目看起来很麻烦,其实不难。题意是个坑,以为输入是有序的,结果居然不是,WA了好多遍。维护五颗记录和的线段树,分别对应对5取余的值,这个题简单的地方就在于查询时每次都查整个区间,所以只需要输出根节点即可,目测如果进一步改成子区间会难很多。维护时,相当于将每个点都作为一个区间,然后两个区间合并时,左孩子的记录可直接用,右孩子的记录需要参考左区间元素个数才能判断在整个区间的位置,公式很好推原创 2014-03-14 22:57:47 · 692 阅读 · 0 评论 -
hdu4747 线段树
杭州网赛的题目,看数据范围就知道原创 2014-04-19 13:30:29 · 818 阅读 · 0 评论 -
hdu4267 线段树
这题时间卡的真紧,内存卡的更紧。。。做这题时写了三份代码,第一份是最基础的线段树区间更新,记录更新条件,开一颗线段树记录值,一颗记录原创 2014-05-08 22:58:15 · 1285 阅读 · 0 评论 -
hdu5068 线段树
因为的状态只在两个门之间有效,很容易想到区间合并原创 2014-10-18 22:16:20 · 683 阅读 · 0 评论