线段树/树状数组
CCSU_HelloWorld
来得很匆忙
展开
-
pku3468: A Simple Problem with Integers
A Simple Problem with IntegersTime Limit: 5000MS Memory Limit: 131072KTotal Submissions: 44408 Accepted: 12993Case Time Limit: 2000MSDescriptionYou have N i转载 2013-07-08 20:18:33 · 367 阅读 · 0 评论 -
poj 2528 线段树 离散化
题目连接:http://poj.org/problem?id=2528题目大意:在一面墙上贴海报,墙很长,后面贴上去的海报要覆盖掉之前贴上去的海报,现在向墙上逐一的贴海报,问到最后墙上可以看见的海报有几种?方法:线段树,离散化代码:#include #include #include #include using namespace std;#define maxn 10原创 2013-09-05 20:28:22 · 544 阅读 · 0 评论 -
hdu 4419 线段树 离散化 扫描线
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4419题目大意:给出红绿蓝三种颜色的矩形,这些颜色的矩形重叠在一起组合成其他的颜色(共7种),求各种颜色的面积。方法:前面处理扫描线的操作都是很基本的操作,关键的操作是在往上更新的时候,首先在红绿蓝用1,2,4表示,然后再通过位运算可以算出组合成的其他颜色,更新关键操作是参考网上的神代码,具体看原创 2013-09-11 21:20:56 · 578 阅读 · 0 评论 -
hdu 2642 二维树状数组
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2642二维树状数组的模板题,单点更新,区域求和。代码如下:#include #include #include #define maxn 1005#define lowbit(x) (x&-x)using namespace std;int map[maxn][max原创 2013-09-02 20:56:35 · 434 阅读 · 0 评论 -
hdu 1255 面积交
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255方法:离散化,线段树,扫描线代码:/**以y轴为扫描线然后用x[]记录下所有的x坐标,并对x坐标去重对于每一条扫描线xl, xr都二分找到在数组x[]的下标在用线段树更新的时候每次找到更新可以的区间的时候用pushdown(),更新到底并且用pushup()往上更新*/原创 2013-09-09 21:37:54 · 573 阅读 · 0 评论 -
poj 1177 / hdu 1828 线段树 离散化 扫描线
题目链接:http://poj.org/problem?id=1177题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1828题目大意:有多个矩形并在一起,求组成的图形的周长。代码:#include #include #include using namespace std;#define maxn 5005struct Li原创 2013-09-08 17:26:28 · 409 阅读 · 0 评论 -
poj 1151 线段树 离散化 扫描线
题目链接:http://poj.org/problem?id=1151题目大意:在一个平面里有许多矩形,给你每个矩形两对角的坐标,求矩形面积交。参考:http://blog.csdn.net/new_c_yuer/article/details/6013747代码:/**每次得到一个要更新的区间,都单点更新*/#include #include #include #in原创 2013-09-07 19:54:01 · 471 阅读 · 0 评论 -
树状数组基础知识
如果给定一个数组,要你求里面所有数的和,一般都会想到累加。但是当那个数组很大的时候,累加就显得太耗时了,时间复杂度为O(n),并且采用累加的方法还有一个局限,那就是,当修改掉数组中的元素后,仍然要你求数组中某段元素的和,就显得麻烦了。所以我们就要用到树状数组,他的时间复杂度为O(lgn),相比之下就快得多。下面就讲一下什么是树状数组:一般讲到树状数组都会少不了下面这个图:下面来分析一下转载 2013-07-08 21:31:05 · 401 阅读 · 0 评论 -
hdu 1166 敌兵布阵
敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 27818 Accepted Submission(s): 11935Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍头子转载 2013-07-08 21:29:24 · 395 阅读 · 0 评论 -
nylg 600 花儿朵朵 //离散化+树状数组或线段树
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=600树状数组+离散化:#include #include #include #include using namespace std;#define maxn 300005#define lowbit(x) (x&-x)struct node{ int原创 2013-08-22 13:23:29 · 546 阅读 · 0 评论 -
poj 3667 Hotel
题意:在一个酒店里有一排房间从1到N标号,游客们要来住店,对于这些房间有两种操作,一种是查询有没有连续的n间房间,有的话就返回最小的房间号并标记入住,没有就返回0,另一种操作就是取消连续的房间a到b的入住。线段树的基本题型,利用区间的合并就可解决。对于线段树中的每个节点需要记录区间范围[L,R],区间从左起连续的房间数lsum,区间从右边起连续的房间数rsum,区间最大的连续房间数sum,还有原创 2013-07-24 16:21:49 · 349 阅读 · 0 评论 -
hdu 1698 Just a Hook
对区间进行修改,求和, 在修改和查询的过程中注意延迟操作。#include #include #define max (100000+5)using namespace std;struct node{ int l, r, d, sum;}v[4*max];void pushup(int n){ v[n].sum = v[2*n].sum + v[2*n原创 2013-07-10 15:51:06 · 368 阅读 · 0 评论 -
hud 1754 I Hate It
线段树,对于点的更新, 求区间最大值。#include #include #include #define MAX (200000+5)using namespace std;struct node{ int l, r, max;}v[3*MAX];int a[MAX];void pushup(int n){ v[n].max = max(v[2*原创 2013-07-10 14:53:20 · 382 阅读 · 0 评论 -
hud 1166 敌兵布阵
敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 27818 Accepted Submission(s): 11935Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以转载 2013-07-08 21:26:17 · 492 阅读 · 0 评论 -
hdu2871 Memory Control 线段树,二分
之前在poj做过hotel题,看到这题时就想到是线段树了。但是这题比hotel多一些操作,这就让我捉急了。这里NEW操作相当于hotel中的入住,Free操作相当于退房,但是又有一点不同,每次给你一个地址,要求知道这个地址是否在使用,在使用的话是被哪个区间使用,在这个操作中借用的别人的想法,利用vector二分查找位置,GET操作由于引用的vector所以操作很简单,在Reset操作时不能重新建树原创 2013-12-26 17:39:27 · 505 阅读 · 0 评论