ACM线段树和树状数组
南极亚拉
这个作者很懒,什么都没留下…
展开
-
poj 2828 BuyTickets(线段树+插队问题)
Buy TicketsTime Limit: 4000MS Memory Limit: 65536KTotal Submissions: 21279 Accepted: 10426DescriptionRailway tickets were difficult to buy around the Lunar New原创 2017-09-14 17:01:17 · 212 阅读 · 0 评论 -
poj3667 Hotel (线段树+区间合并)
转自:https://www.kancloud.cn/digest/acarthur/166619题意:1 a:询问是不是有连续长度为a的空房间,有的话住进最左边2 a b:将[a,a+b-1]的房间清空思路:记录区间中最长的空房间线段树操作:update:区间替换 query:询问满足条件的最左断点//msum最大一段连续区间 lsum,rsum从左,右边起最大连续区间#i转载 2017-09-29 21:47:13 · 168 阅读 · 0 评论 -
HDU 3308 LCIS(线段树+区间合并+最长递增连续子串)
Problem DescriptionGiven n integers.You have two operations:U A B: replace the Ath number by B. (index counting from 0)Q A B: output the length of the longest consecutive increasing subseque原创 2017-10-01 16:07:34 · 249 阅读 · 0 评论 -
HDU 2871 Memory Control(线段树+区间合并+vector)
Memory ControlProblem DescriptionMemory units are numbered from 1 up to N.A sequence of memory units is called a memory block. The memory control system we consider now has four kinds原创 2017-10-09 21:58:44 · 228 阅读 · 0 评论 -
HDU 3308 LCIS(线段树+区间合并+连续最长上升子序列)
LCISTime Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7995 Accepted Submission(s): 3406Problem DescriptionGiven n integers.Yo原创 2018-06-03 21:28:25 · 271 阅读 · 0 评论 -
poj 3225 Help with Intervals(线段树+区间更新)
题意:区间操作,交,并,补等思路:我们一个一个操作来分析:(用0和1表示是否包含区间,-1表示该区间内既有包含又有不包含)U:把区间[l,r]覆盖成1I:把[-∞,l)(r,∞]覆盖成0D:把区间[l,r]覆盖成0C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区间0/1互换S:[l,r]区间0/1互换倍化区间处理开闭区间的问题。因为普通的线段树实际处转载 2017-10-02 19:19:54 · 204 阅读 · 0 评论 -
HDU 3397 Sequence operation(线段树综合操作)
转自:http://blog.csdn.net/helloworld10086/article/details/48104941题意:0 a b将区间[a,b]所有数全部变成0 1 a b将区间[a,b]所有数全部变成1 2 a b将区间[a,b]中所有数0 1互换,0变1,1变0 3 a b输出区间[a,b]中1的个数 4 a b输出区间[a,b]中最长连续1转载 2017-10-10 19:44:21 · 195 阅读 · 0 评论 -
HDU1540 Tunnel Warfare(线段树+区间合并)
Tunnel WarfareTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10051 Accepted Submission(s): 3935Problem DescriptionDuring the原创 2017-10-10 22:57:30 · 178 阅读 · 0 评论 -
POJ 2482 Stars in Your Window(线段树扫描线)
题意:给出星星的坐标和亮度,给定一个矩形(长/宽),求框住的星星亮度和的最大值,恰好在边上的不算。对于每颗星星,我们以左下角构成一个矩形,两条边:一条范围[x,x+w),高度为y,权值为brightness,另一条范围[x,x+w),高度为y+h,亮度为-brightness。这样我们对所有边进行排序,从低到高扫描就行了。计算线段最大覆盖次数即可。#include #includ转载 2017-10-19 21:31:45 · 206 阅读 · 0 评论 -
hdu1828 Picture(线段树+扫描线+矩形周长并)
转自:http://blog.csdn.net/tomorrowtodie/article/details/52048323说完了矩形面积,矩形周长的方法自然是类似的,但是周长的计算却更复杂些,看这张图:周长可以分成两部分计算,横线和竖线,转载 2017-10-12 22:46:25 · 1270 阅读 · 0 评论 -
HDU3265(线段树+扫描线+挖空矩形面积并)
PostersTime Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6472 Accepted Submission(s): 1575Problem DescriptionTed has a new hous原创 2017-10-13 20:42:17 · 260 阅读 · 0 评论 -
HDOJ2665 &&poj2104 k-th number(主席树+求第K小)
转自:http://www.cnblogs.com/Empress/p/4652449.html题意:给n、m 下面有n个数 (编号1到n) 有m个询问,询问的是上面的数的编号在[l,r]之间第k小的数 n、m的范围都是#include#include#includeusing namespace std;#define ls转载 2017-10-15 20:34:34 · 205 阅读 · 0 评论 -
hdu 1255 覆盖的面积(线段树+扫描线)
这题的代码在一般的线段树求面积并的基础上进行了修改,但是所用的思想是一样的,所以不难理解回忆一下一般的求矩形覆盖面积,线段树节点里面有一个重要的变量,cnt。这个变量表示了该节点表示的区间被完全覆盖,如果cnt=0,说明没有被完全覆盖(但不代表没有被覆盖),要算出该节点所代表的区间被覆盖的长度,需要由它左右孩子节点被覆盖的长度相加所得。如果cnt=1,表示被完全覆盖,覆盖长度就是该区间长度转载 2017-10-15 23:48:52 · 193 阅读 · 0 评论 -
[主席树]ZOJ2112 && BZOJ1901 Dynamic Rankings
题意:n个数,q个询问 (nQ x y z 代表询问[x, y]区间里的第z小的数C x y 代表将(从左往右数)第x个数变成y转自:http://www.cnblogs.com/Empress/p/4659824.html#include using namespace std;typedef long long LL;#define lson l,转载 2017-10-16 20:00:37 · 173 阅读 · 0 评论 -
hdu1698 Just a Hook(线段树+区间染色)
//转载自:http://blog.csdn.net/d_x_d?viewmode=list#include#include#include#include#include#include#define MAXN 100000+10 using namespace std;struct node{ int l, r, s;}t[MAXN << 2];int n, s转载 2017-09-15 19:42:39 · 216 阅读 · 0 评论 -
HDU3255 Farming(线段树+扫描线+体积并)
题意:给出n个矩形,每块矩形种不同价值的种子,矩形会出现相交情况,这时候价值高的种子会把价值低的种子淘汰,问最后得到全部价值。思路:如果线段树+扫描线可以求覆盖面积,那么这题就是求体积并,试想把种子的价值当作高,那么按高度升序排序后,分段求体积,选出高度不小于h[i]的矩形插入线段树求当前底面积,每次就相当于求一边覆盖面积(其实就是当前底面积,那么久相当同一块矩形里,最高的高(价值原创 2017-10-17 19:28:22 · 298 阅读 · 0 评论 -
2017ICPC北京网络赛Minimum(线段树+区间最值)
#include #include using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1const int maxn = 200000;int MAX[maxn << 2];int MIN[maxn << 2];int pos;//区间最大值void PushU原创 2017-09-23 16:50:57 · 228 阅读 · 0 评论 -
2017 ACM-ICPC 亚洲区(南宁赛区)网络赛The Heaviest Non-decreasing Subsequence Problem(线段树优化DP)
Let SS be a sequence of integers s_{1}s1, s_{2}s2, ......, s_{n}sn Each integer is is associated with a weight by the following rules:(1) If is is negative, then its weight is 00.(2)原创 2017-09-25 16:54:58 · 141 阅读 · 0 评论 -
HDOJ 1394 Minimum Inversion Number(线段树+逆序数)
Minimum Inversion NumberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 21463 Accepted Submission(s): 12851Problem Description原创 2017-09-09 20:53:54 · 212 阅读 · 0 评论 -
hdu4521 小明系列问题——小明序列(线段树+dp)
小明系列问题——小明序列Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 3393 Accepted Submission(s): 1078Problem Description 大家都知道小明最喜欢研原创 2017-09-26 13:02:45 · 184 阅读 · 0 评论 -
ZOJ 1610Count the Colors(线段树+区间染色)
F - Count the Colors ZOJ - 1610 #include #include#include using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1const int MAXN = 8010;int n, col[MAXN <<原创 2017-09-23 22:48:17 · 498 阅读 · 0 评论 -
poj 3264 Balanced Lineup(线段树+RMQ)
Balanced LineupTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 56914 Accepted: 26673Case Time Limit: 2000MSDescriptionFor the daily milking, Far原创 2017-09-26 22:01:44 · 149 阅读 · 0 评论 -
HDOJ 1754 I hate it(线段树+区间最大值)
火盘古校园招聘开始!I Hate ItTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 83211 Accepted Submission(s): 31986Problem Descr原创 2017-09-08 21:13:01 · 416 阅读 · 0 评论 -
HDOJ 1166 敌兵布阵 (区间求和)(线段树)(树状数组)
敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 457 Accepted Submission(s): 276 Problem DescriptionC国的死对头原创 2017-09-06 22:53:45 · 173 阅读 · 0 评论 -
HDOJ 2852 KiKi's K-Number (树状数组+二分查找)
KiKi's K-NumberTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 240 Accepted Submission(s): 97 Problem Description原创 2017-09-11 17:03:20 · 293 阅读 · 0 评论 -
hdoj 4027 Can you answer these queries?(线段树+灵活的区间更新)
Can you answer these queries?Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total Submission(s): 19302 Accepted Submission(s): 4555Problem Descriptio原创 2017-09-27 22:42:25 · 149 阅读 · 0 评论 -
poj2528 Mayor’s posters(线段树+离散化)
转自:https://www.kancloud.cn/digest/acarthur/166619题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报思路:这题数据范围很大,直接搞超时+超内存,需要离散化:离散化简单的来说就是只取我们需要的值来用,比如说区间[1000,2000],[1990,2012] 我们用不到[-∞,999][1001,1989][1991,1999][2转载 2017-09-27 22:51:55 · 230 阅读 · 0 评论 -
poj3468 A Simple Problem with Integers(线段树+区间更新+非完全替换)模板
const int INF = 0x3f3f3f3f;const int MAX_N = 100010;int n;struct SegTreeNode{ int val; int addMark;//延迟标记}segTree[MAX_N<<2];//定义线段树 /* 功能:构建线段树 root:当前线段树的根节点下标 arr: 用来构造线段转载 2017-09-14 18:59:22 · 128 阅读 · 0 评论 -
HDU 3642 Get The Treasury(体积并+覆盖三次+线段树+扫描线)
这题就是给出了好多个长方体, 求出那些被覆盖了 3次及以上的体积我们注意到z的范围很小,而且就给了1000个长方体那么可以把z坐标离散化然后在相邻的z坐标空间内,就变成了求面积覆盖记录三个变量,代表一次覆盖,两次覆盖,三次覆盖及以上#include #include #include #include using namespace st原创 2017-10-17 16:28:20 · 237 阅读 · 0 评论 -
hdu1542 Atlantis(扫描线+矩形面积并)
AtlantisTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14664 Accepted Submission(s): 6045Problem DescriptionThere are severa转载 2017-10-11 20:52:46 · 300 阅读 · 0 评论