线段树与树状数组
文章平均质量分 77
bubbleoooooo
这个作者很懒,什么都没留下…
展开
-
BestCoder Round #11 (Div. 2) Argestes and Sequence (hdu 5057)
#include #include #define MAXN 100010 #define MOD 32768 unsigned short tree[MAXN][10][10]; char cnt[MAXN][10][10]; int a[MAXN]; int n,m; int lowbit(int x){ return x&(-x); } void add(int x,int P,int D原创 2014-09-29 10:37:22 · 931 阅读 · 3 评论 -
Codeforces Round #271 (Div. 2)E. Pillars(dp+线段树优化)
题意:给定一个序列,求符合|ai|原创 2014-10-08 21:28:17 · 540 阅读 · 0 评论 -
Codeforces Round #271 (Div. 2)F. Ant colony(线段树)
题意: #include #include using namespace std; #define INF 1000000001 #define MAXN 100010 #define MIN(a,b) a<b?a:b #define lson 2*o,l,m #define rson 2*o+1,m+1,r struct Node { int gcd,min,cnt; }t原创 2014-10-09 21:24:06 · 548 阅读 · 0 评论 -
hdu 1542 Atlantis(线段树+扫描线)
先离散y,然后以y为区间建线段树,从左到右,枚举分割线x,一段一段面积累加。 Cover记录当前的y区间被几个矩形包含。len记录被覆盖的区间长度。 比较机智的地方是Cover并不需要在更新线段树的时候进行更新。 一旦这个区间的cover更改了,他可以由之前的小区间的值反更新上来。 #include #include using namespace std; #define ls原创 2015-03-10 22:38:40 · 391 阅读 · 0 评论 -
hdu 1255 覆盖的面积(线段树+扫描线)
此题与Atlantis类似,只是多了一个记录覆盖两次线长变量ss,ss由覆盖一次的线长变量len进行更新。 #include #include using namespace std; #define lson 2*o,l,mid #define rson 2*o+1,mid+1,r #define INF 1000000000 const int maxn=5010; typedef lon原创 2015-03-10 22:42:48 · 402 阅读 · 0 评论 -
hdu 3308 LCIS (区间合并)
求区间最长最长上升序列长度,是线段树区间合并的典型题目。 维护左起最长,区间最长和右起最长三个值即可,因为要求上升序列,还要保存区间端点值。 #include #include using namespace std; #define lson 2*o,l,mid #define rson 2*o+1,mid+1,r #define INF 1000000000 const int原创 2015-03-10 22:32:39 · 370 阅读 · 0 评论 -
hdu 2665 Kth number(函数化线段树)
题意:给定一个序列,问区间内第K大的数是多少。 #include #include #include #include using namespace std; #define maxn 100005 #define lson l,mid #define rson mid+1,r mapms; int node=0; int head[maxn],a[maxn],b[maxn],sum[maxn原创 2015-03-10 22:23:17 · 425 阅读 · 0 评论