自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(12)
  • 收藏
  • 关注

原创 线段树总结

之前做了些线段树相关的题目,开学一段时间后,想着把它整理下,完成了大牛NotOnlySuccess的博文“完全版线段树”里的大部分题目,其博文地址Here,然后也加入了自己做过的一些题目。整理时,更新了之前的代码风格,不过旧的代码仍然保留着。      同样分成四类,不好归到前四类的都分到了其他。树状数组能做,线段树都能做(如果是内存限制例外),所以也有些树状数组的题目,会标示出来,并且放到其

2012-11-27 00:38:56 25260 22

原创 hdu 4027 Can you answer these queries?

题意:给你N个数,有M个操作,操作有两类,(1)"0 l r",表示将区间[l,r]里的每个数都开根号。(2)"1 l r",表示查询区间[l,r]里所有数的和。虽然题目给出的数的范围达到了2^63次方,但是,最多开根号7次就会变成1。所以在每次更新的时候,判断,如果这个区间里的所有数被开根号的次数大于7,就不用再往下更新了,其次,因为每个数最多只会有7次开根号,所以在更新的时,可以一直更新到

2012-11-29 01:12:27 2137 1

原创 hdu 3954 Level up(成段更新)

题意:有N个英雄,每个英雄的初始等级为1,初始经验为0,有K个等级,QW个操作。接下来一行中有K-1个数值,代表升到等级2,等级3……所要达到的经验。接下来的QW行里,每行是一个操作,操作有两类,(1)"l r e",代表区间[l,r]里的每个英雄将得到e乘以他的等级的经验。(2)"l r",表示查询区间[l,r]里经验最大值。        除了可以分成k棵线段树做之外,也可以合成一棵线段树

2012-11-29 01:01:59 2270

原创 uva 11983 Weird Advertisement(扫描线)

题意:给出N个矩形,求被这些矩形覆盖K次以上的区域面积。做过hdu 3642 Get The Treasure和hdu 1255 覆盖的面积这道题应该不难才是。#include #include #include #include #include #include using namespace std;#define LL(x) (x<<1)#define RR(x)

2012-11-29 00:32:05 1914

原创 hdu 3544 Farming(扫描线)

题意:有N块农田,每块农田中种一种作物,每种作物都有一个价格,当在同一区域内种植了两种不同的作物时,作物价格大的生存下来,作物价格小的死亡。求最后的所有作物的能买的总钱数。       将作物的价格转化为高,问题就变成了求长方体体积的并了,用法跟hdu 3642 Get The Treasure很类似。#include #include #include #include #inc

2012-11-29 00:24:04 1507

原创 poj 2464 Brownie Points II (扫描线)

题意:在平面直角坐标系中给你N个点,stan和ollie玩一个游戏,首先stan在竖直方向上画一条直线,该直线必须要过其中的某个点,然后ollie在水平方向上画一条直线,该直线的要求是要经过一个stan之前画过的点。 这时候平面就被分割成了四块,两个人这时候会有一个得分,stan的得分是平面上第1、3象限内的点的个数,ollie的得分是平面上第2、4象限内的点的个数,在统计的时候在所画线上的点都不

2012-11-29 00:17:24 2468 1

原创 hdu 3642 Get The Treasure(扫描线)

题意:有T给测试数据,每组数据先给一个数字N,接下来的N行里,每行里有6个数字,分别是x1,y1,z1,x2,y2,z2,表示这个长方体x轴方向的范围从x1到x2,y坐标和z坐标类似,求至少有三个长方体相交的体积是多少。        因为Z轴的范围很小,所以我们将Z轴离散化之后,枚举Z[i]和Z[i+1]之间,矩形并时覆盖了三次以上的面积,那么这时候,就可以求出在Z[i]和Z[i+1]之间题

2012-11-28 23:19:58 1948

原创 hdu 1255 覆盖的面积(扫描线)

题意:有T组测试数据,每组数据先给一个数字N,接下来的N行里,每行四个浮点数表示矩形的左上角坐标和右下角坐标,要求这些矩形至少覆盖过两次的面积。        与POJ 1151 Atlantis 的差别是,我们在答案里加上的不是覆盖一次的长度乘以两条线之间x坐标的差,而是用覆盖两次的长度,那么问题就变成如果从覆盖一次的面积得到覆盖两次的面积。        为叙述方便,我们假设len[2

2012-11-28 21:10:57 3694

原创 Codeforces Beta Round #43 D. Parking Lot(成段更新)

题意: 有一条长度为L的街道,有N个操作,操作有两种,(1)"1 a",表示有一辆长度为a的车开进来想找停车位,停车位必须满足与它前面的车距离至少为b,与后面的车距离至少为f.如果能找到这样的停车位,输出这辆车的起始位置(且这个位置最小),否则输出-1。(2)"2 a",表示第a个事件里进来停车的那辆车开出去了。建立起点为-b,终点为L+f的线段树,查找的时候,直接查找len+n+f的线段就可

2012-11-28 00:50:26 1606

原创 uestc 1546 Bracket Sequence (成段更新)

题意:有T(T        如果我们视‘(’为-1,而‘)’为1,注意到如果在区间[l,r]里从l出发不断向后扫直到r,同时求和,在这个过程中,如果和的最大值是小于等于0的,并且最后的和是等于0的,那么这个序列是合法的,即输出“YES”。        那么这就要求在线段树的结点中要保存一个sum域和mx域(即最大值),对于操作“set"和操作“reverse"分别有两个延迟操作与之对应

2012-11-27 16:53:09 1894

原创 uestc 1425 Another LCIS(成段更新)

题意:有T(t         要记录区间里的最长的序列长度是多少,用mx来记录。由于最长的连续上升序列可以在区间的左端点,右端点,所以在线段树里增加两个域lmx和rmx,分别表示,在区间的端点处,分别向右向左的最长的满足条件的序列长度。但是还有可能出现在中间,所以又增加两个域lval和rval,分别表示区间端点的值是多少。合并的时候,判断左儿子的rval是否小于右儿子lval,如果满足,这个

2012-11-27 01:19:30 2347 5

原创 POJ 2991 Crane(成段更新)

题意:有N根杆子,前后两根杆子通过一个节点连接,每个节点可以旋转一定的角度,每次给你一个操作(s,a)表示将第S与S+1之间的角度修改为a度,并且每次操作之后都需要求出第N个节点的位置。首先,最后一个节点的坐标(即位置)可以通过所有杆子末尾的坐标相加得到(这跟向量相加很类似)。因为每次更新需要修改S和S+1的位置,所以我们需要知道每次更新之后S和S+1的角度——查询操作,知道之后,再根据这次需

2012-11-27 01:13:01 2963

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除