RMQ/线段树
算球?
在校学生
展开
-
codeforces 46D Parking Lot(线段树 区间合并)
附上题意:http://blog.csdn.net/cyhbyw/article/details/8793195 不知道怎么wa的,没找到错误,然后就把 poj 3667 Hotel的代码改了改就交了,A掉。。。#include <cstdio>#include <cstring>#include <algorithm>#define lson l,m,rt<<1#define rson m原创 2017-10-22 14:55:07 · 361 阅读 · 0 评论 -
hihocoder 1116 : 计算(线段树 区间合并)
l表示每个前缀之积的和 r表示每个后缀之积的和 m表示区间内所有数字之积 查询的结果就是整个区间的结果。#include <bits/stdc++.h>using namespace std;typedef long long LL;#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1const int MAXN = 1e5+10;原创 2017-10-22 12:52:46 · 239 阅读 · 0 评论 -
hihocoder 1078 : 线段树的区间修改
#include <bits/stdc++.h>using namespace std;typedef long long LL;#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1#define pushUp(rt) (sum[rt] = sum[rt<<1]+sum[rt<<1|1])#define pushDown(rt,m) i原创 2017-10-22 11:32:29 · 212 阅读 · 0 评论 -
RMQ (Range Minimum/Maximum Query)算法
1. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。这两个问题是在实际应用中经常遇到的问题,下面介绍一下解决这两种问题的比较高效的算法。当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们转载 2017-08-12 20:23:35 · 210 阅读 · 0 评论 -
poj 3264 Balanced Lineup(线段树,ST算法)
线段树区间查询,3000+ms水过#include <cstdio>#include <cstring>const int MAXN = 50010;int N,Q;int num[MAXN];int maxn,minn;struct node{ int maxn; int minn; int l,r;};node segTree[MAXN<<2];int原创 2017-03-01 12:58:35 · 274 阅读 · 0 评论 -
hdu 1166 敌兵布阵(线段树 or 树状数组)
本来用c++写的,结果超时了,后来把输入输出都改成了c的,就ac了#include #include int num[50001];char command[10];typedef struct node node;struct node{ int l,r,person;};node numtree[200004];void BuildTree(int t,int原创 2016-06-15 22:19:57 · 370 阅读 · 0 评论 -
hdu 1556 Color the ball(线段树 or 树状数组 or 前缀和)
#include #include typedef struct node node;struct node{ int l,r,sum;};node ball[300000];int n;void BuildTree(int t, int l, int r){ ball[t].l = l; ball[t].r = r; ball[t].sum =原创 2016-06-19 21:40:33 · 674 阅读 · 0 评论 -
hdu 3308 LCIS(线段树)
单点更新,区间合并,最长连续上升子序列 HH神总结的线段树专辑:https://wenku.baidu.com/view/71fc1659ba1aa8114431d97b.html 里面给的练习,看懂里面那个例题,做这个题就很简单了#include <cstdio>#include <cstring>#include <algorithm>#define lson l,m,rt<<1#d原创 2017-04-27 23:06:42 · 419 阅读 · 0 评论 -
poj 3667 Hotel(线段树,区间合并)
HH神总结的线段树专辑:https://wenku.baidu.com/view/71fc1659ba1aa8114431d97b.html 里面的例题,看懂代码后。基本也就把代码背下来了。。。 自己再写一遍,基本就是在默写。。#include <cstdio>#include <cstring>#include <algorithm>#define lson l,m,rt<<1#defi原创 2017-04-27 13:35:36 · 672 阅读 · 0 评论 -
hdu 2528 Mayor's posters(线段树+离散化)
参考:http://blog.csdn.net/non_cease/article/details/7383736 https://wenku.baidu.com/view/71fc1659ba1aa8114431d97b.html第一次做线段树离散化的题目。。。。 wa了好多次,才发现是数组开小了。。#include <cstdio>#include <cstring>#include <原创 2017-04-26 19:29:38 · 705 阅读 · 0 评论 -
poj 2777 Count Color(线段树)
和poj 2528差不多#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int MAXN = 100010;//col[rt]=-1 表示rt节点管理的区间内的颜色是不同的颜色/原创 2017-05-03 17:09:39 · 423 阅读 · 0 评论 -
hdu 1540 & poj 2892Tunnel Warfare(线段树区间合并)
单点更新,区间合并,思路很简单。 不过还是有些细节没注意到,就是我代码中注释掉的那两行#include <cstdio>#include <cstring>#include <algorithm>const int MAXN = 51010;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1//lsum从左边数连续村庄的个数 rsum是右边的原创 2017-04-28 15:42:47 · 615 阅读 · 0 评论 -
HDU 1754 I Hate It(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754#include int max(int a, int b){ return a>b ? a:b;}int data[200005];typedef struct{ int l,r,maxn;} stu;stu T[1000010];void Build原创 2016-05-04 18:51:41 · 338 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers(线段树,区间更新&求和)
题目链接:http://poj.org/problem?id=3468参考:http://www.cnblogs.com/kuangbin/archive/2011/08/14/2138408.html#include typedef long long llong;typedef struct{ int l,r; llong nsum,der;} con;ll原创 2016-05-04 22:15:12 · 319 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers(线段树)
第一次写区间更新的线段树,第一次用懒惰标记#include <cstdio>typedef long long ll;struct node{ ll l,r; ll flag,sum;};ll num[100001];node segTree[400004];void Build(ll t, ll l, ll r){ segTree[t].l = l; s原创 2016-10-21 20:38:48 · 298 阅读 · 0 评论 -
hdu 1698 Just a Hook(线段树)
懒惰标记#include <cstdio>struct node{ int l,r,sum,lazy;};node segTree[400004];void Build(int t, int l, int r){ segTree[t].l = l; segTree[t].r = r; segTree[t].lazy = 0; if(l == r)原创 2016-10-22 15:38:50 · 420 阅读 · 0 评论 -
zoj 1610 Count the Colors(线段树)
做了大概四个小时,还是参考的别人的,最终才搞定,感觉这题坑太多。 开始建树的时候按照给的n建的树,后来仔细想了下,这错的离谱,这是我的锅,,然后染色的时候,如果给的是x1,x2,c,更新时应该x1+1,x2,c,比如0,4,4,0到4染色4段,也就是染色1到4这四个点。。。在计算某个颜色出现的次数的时候,计算的是颜色段的个数,我起初算的竟然是长度,我的锅。。。。 代码是在vjudge上参考的一个原创 2017-02-28 20:05:04 · 470 阅读 · 0 评论 -
poj 1151 & hdu 1542 Atlantis(线段树,扫描线)
第一次做扫描线,这个是矩形面积并。。。。wa了好多发,才发现本应是double的数组写成了int。。。。 HH神总结的线段树专辑:https://wenku.baidu.com/view/71fc1659ba1aa8114431d97b.html 里面的例题。。。。 思路:浮点数先要离散化;然后把矩形分成两条边,上边和下边,对横轴建树,然后从下到上扫描上去,用 cnt 表示该区间下边比上边多原创 2017-04-29 19:54:05 · 633 阅读 · 0 评论