
线段树
morejarphone
这个作者很懒,什么都没留下…
展开
-
POJ2886(线段树)
#include #include #include #include #include using namespace std;#define maxn 511111#define INF 1000000009#define pl c<<1#define pr (c<<1)|1#define lson tree[c].l,tree[c].mid,c<<1#define rs原创 2015-10-22 11:38:36 · 379 阅读 · 0 评论 -
HDU 4366 (dfs序 线段树)
题意:给一棵树,每个节点有a,l两个值,每次询问一个节点的子树中a值比他大并且l值最大的节点。先把按照dfs序所有的节点放到线段树中,线段树只需要维护b值的最大值。然后节点按照a值从小到大,b从大到小排序,扫描一遍,每次查询最大,删除这个节点。#include using namespace std;#define pl c<<1#define pr (c<<1)|1#de原创 2016-06-10 09:32:47 · 361 阅读 · 0 评论 -
HDU 5692 (线段树 dfs序)
SnacksTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 215 Accepted Submission(s): 48Problem Description百度科技园内有n个零食机,零食机之间通过n原创 2016-05-21 20:18:26 · 611 阅读 · 0 评论 -
HDU 5361 (优先队列 线段树)
In TouchTime Limit: 8000/4000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1876 Accepted Submission(s): 510Problem DescriptionThere are n soda原创 2016-05-31 22:07:57 · 668 阅读 · 0 评论 -
HDU 3973 (哈希+线段树)
题目链接:点击打开链接题意:给出一个原串和n个询问串,然后m个操作,询问分两种:1:把x位置的字母改变;2:询问[x,y]之间的字符串是不是等于某个询问串。先把每一个询问串的哈希值存到map里面,然后用线段树维护每一个区间的字符串的哈希值,如果需要的串包含左右两个区间,就把右边区间求出的哈希值进左边区间的长度位。#include #include #include #in原创 2016-04-22 00:10:26 · 502 阅读 · 0 评论 -
HDU 5643 (神奇的打表 线段树)
King's GameTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 263 Accepted Submission(s): 154Problem DescriptionIn order to reme原创 2016-03-13 18:35:14 · 445 阅读 · 0 评论 -
UVALive 6838 (线段树)
题意是给出长度为n的合法括号序列,有q个询问,每次把某个位置的一个括号反转,求需要反转的最左端的一个括号的位置,使得括号序列仍然合法.考虑一个前缀和的数组a,如果某个位置是(那么前缀+1,否则-1,一个括号序列合法当且仅当所有的a[i]>=0&&a[n]==0,所以在改变某个位置的括号后,我们要找的就是最左端的一个括号使得改变它以后整个括号序列仍然满足这个性质.假设改变的位原创 2015-12-07 13:18:27 · 351 阅读 · 0 评论 -
UVALive 6834 (线段树)
题意是数轴上有n个商店,分别在1~n,起点是0,要走到n+1,必须每个商店都进去一次.有的商店进入有先后关系,比如要先进第i个商店才能进第j个商店(i>j).求走的最少步数.既然关系都是逆的,对于每个关系看成一个区间,最终的答案就是n+1+所有区间长度并*2.然后没看数据量直接上了棵线段树~#include using namespace std;#define maxn 1111原创 2015-12-07 15:40:46 · 399 阅读 · 0 评论 -
HDU 5592 (线段树)
ZYB's PremutationTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 169 Accepted Submission(s): 71Problem DescriptionZYB has原创 2015-12-05 23:23:08 · 377 阅读 · 0 评论 -
HDU 4614 (线段树)
Vases and FlowersTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 2615 Accepted Submission(s): 1018Problem Description Alice原创 2015-12-01 21:44:15 · 356 阅读 · 0 评论 -
HDU5239(线段树,找规律,快速乘法)
题意是给n个数,m个询问,每次输出之前的值加上此时询问区间的值,然后区间的数字都平方。然后发现所有的数字平方到一定次数以后如果继续平方取模就不会变化了,用这个规律可以在线段树节点维护平方次数,大于某一值时可以以后的更新可以直接忽略。坑点是模数很大,需要把平方转化成类似快速幂的加法。#include using namespace std;#define maxn 111111#d原创 2015-10-13 20:52:38 · 452 阅读 · 0 评论 -
POJ3667(线段树区间合并)
题意:给你1到n的区间,初始都能使用,两种操作:1 x :找到最左端的能使用的长度为x的子区间,并使占用这个子区间; 2 x k :使得从x开始长度为k的子区间又能够使用。线段树节点维护从左边开始的最长子区间,从右边开始的最长子区间,总的最长子区间,设三个节点为空标记,全满标记,和有隔断点标记,然后合并区间就很容易了。 #include #include #include #in原创 2015-10-23 21:36:19 · 439 阅读 · 0 评论 -
HDU4791(线段树+二分)
#include #include #include #include #include using namespace std;#define maxn 111111#define INF 1000000009#define pl c<<1#define pr (c<<1)|1#define lson tree[c].l,tree[c].mid,c<<1#define rs原创 2015-10-21 23:44:02 · 376 阅读 · 0 评论 -
HDU 5649 (二分 线段树)
题目链接:点击这里题意:给出一个排列,每次操作[l,r]区间的数原地升序或者降序,询问最后k下标的数。二分最后的结果mid,然后把比mid大的换成1,小于等于mid的换成0,那么升序降序相当于求出区间中0的个数然后把前半段和后半段分别用0\1覆盖。这样只需要维护一个区间查询,区间修改的线段树即可。#include <cstdio>#include <cmath>#include <algorit原创 2016-10-18 19:56:38 · 545 阅读 · 0 评论