自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 POJ3667Hotel(线段树)

->题目请戳这里->中文题目请戳这里题目大意:n个房间编号1-n,现在有2个操作:操作1,给一个数d,表示要预定d间连续的房间,如果没有输出0,如果有,输出最小的起始房间号。操作2,给一个区间a,b,表示编号a到b的房间清房。题目分析:线段树经典模型。这题并不难,不过要想清楚。我曾以为自己想清楚了,结果WA了一早上。。。主要思路:在线段树每个节点维护3个变量:maxlen表示当

2013-06-30 16:23:27 1167

原创 FZOJ2124吃豆人(bfs+优先队列)

->题目请戳这里题目大意:给一个n*m的迷宫,有个人,位置是p,有个豆子,位置是b,可能有一个宝贝,位置在s,其他的要么是障碍X,要么是空地.,现在人要吃豆子,人只能上下左右移动,每次花时间1秒,这个人的舌头比较长,如果他和豆子之间没有障碍,他直接伸舌头就能把豆子吃了,舌头走一格只要0.1秒(舌头要收回来才能吃豆子)。宝贝是用来加速的,吃了宝贝后人的移动速度就快了一倍,即走一格只要0.5秒。现

2013-06-28 16:56:02 1096

原创 hdu3954Level up(线段树成段更新)

->题目请戳这里突然传来噩耗,所以期末考试提前一周。。。欲哭无泪。。。题目大意:有n个英雄一字排开,编号1-n,现在有一些怪兽,一波一波的,每次袭击l-r的英雄,当然我们的英雄总能打败怪兽,并获得相应的经验值,获得的经验值= 英雄当前等级*升级因子e,e每次输入给定,经验值累计到一定程度就会升级,总级别k题目分析:线段树。不过这题线段树不是那么容易的,TLE了整个下午。。。首先想到的是

2013-06-20 20:40:04 944

原创 hdu1264Counting Squares(二维线段树水过)

->题目请戳这里题目大意:一个二维平面内有一些矩形,坐标范围0-100;求覆盖的1*1单位面积的个数,重复覆盖的算1次。题目分析:可以用经典的一维线段树+扫描线求面积并,但此题数据量太小,0-100,而且都是整点,所以二维线段树直接水过。详情请见代码:#include #include#include#includeusing namespace std;const in

2013-06-19 23:23:01 1046

原创 poj1389Area of Simple Polygons(线段树+线扫描求矩形面积并)

->题目请戳这里题目大意:略题目分析:简单求矩形面积并,不懂的可以看其他几篇博客。这题就是拿来练一下1Y率和敲代码速度。果然小手一抖,把i和j敲反了卡了一下,BS一下自己。。。详情请见代码:#include #include#include#includeusing namespace std;const int N = 1005;int hash[N + N];st

2013-06-19 18:15:23 887

原创 hdu1828Picture(线段树求矩形周长并)

->题目请戳这里题目大意:略题目分析:要求矩形周长并。看到这题觉得和这几天写的矩形面积并差不多,然后就直接敲了个线段树+扫描线,写差不多了才发现和面积并还是有区别的。然后仿照求面积并的方法,在线段树节点里面加各种信息,结果总是不对。重新理一下思路发现,求周长并只需要考虑2种情况:水平的边和竖直的边,水平的边不难求,在每插入一条扫描线的时候结算一下,当前区间被分成了几段,用分成的段数*2*当

2013-06-19 16:04:04 1462

原创 hdu4419Colourful Rectangle(线段树+离散化+扫描线)

->题目请戳这里题目大意:在二维平面内给n个矩形,矩形有3种颜色,不同颜色相交的部分就产生了不同的颜色,一共就有7种颜色。对于每个区域内的颜色与某中颜色覆盖的次数无关,只与覆盖的颜色种类有关,求最后这n个矩形相交产生7种颜色的面积。题目分析:这题和这道hdu1255思路基本是一样的,不过1255求的是重复覆盖2+次面积并,情况简单些,这里3种颜色一交就会产生7种情况,分析就稍微复杂一点点。

2013-06-18 14:12:41 886

原创 杭电1255覆盖的面积(线段树+离散化+线扫描)

->题目请戳这里题目大意:中文题,不解释。题目分析:求矩形面积并,线段树搞之。但是这题不是简单求面积并,而是求覆盖2次及以上的面积并。一开始直接写个二维线段树,尽快已经尽量做到节约空间,最后还是爆了,1000个矩形,二维线段树伤不起。。。然后换个思路,换成一维线段树+线扫描,仿照之前写的一个面积并的题目,结果又是各种跪。然后分析了一下原因,因为我一开始所谓的线扫描法简直弱爆了,那就不叫线扫

2013-06-17 19:31:25 1121

原创 hdu3244Inviting Friends(二分+完全背包)

->题目请戳这里题目大意:lz要请客,要准备n种原料,每种原料有6个参数:x,y,s1,p1,s2,p2。表示的含义分别是:对于第i种原料,每个人的需求量是x,现在还剩下y的量,每种原料有2种包装,一种小包的,一种打包的,每一小包的量是s1,价格是p1,打包的量是s2,价格是p2。现在给你n种原料和m的钱,求最多能请几个人。题目分析:由于要请多少人不知道,要满足所有人,所以我们二分枚举人数

2013-06-10 18:06:33 1349 2

原创 hdu3242List Operations(简单模拟)

->题目请戳这里题目大意:给2个集合,每个集合用一对[ ]括起来,里面有数字和小写字母组成的元素,用","隔开,现在给2个集合以及2种操作:++操作,把第二个集合的元素合并到第一个集合中;--操作,就是从第一个集合中去掉2个集合重复的元素,去完为止。注意这里的集合中可以有重复的元素。题目分析:简单模拟水之。详情请见代码:#include #include#include#in

2013-06-10 17:49:10 1063

原创 poj1151&hdu1542Atlantis(线段树+离散化+线扫描 VS 二维线段树)

->>题目戳这里     戳这里也行->_题目大意:二维平面内给n个矩形,求面积并。题目分析:线段树线段树~注意给定的坐标点是浮点数,所以要离散化。这题用线段树2种做法:1。线段树+离散化+线扫描。此法相对简单,对x轴坐标离散化建立一颗线段树,对所以矩形按矩形的相对高度排序,先插相对位置比较低的矩形,这样在y轴方向上可以方便的求出y方向上的并,因为排序后y方向上只要2种情况,后

2013-06-09 20:05:29 1029

原创 hdu1540&poj2892Tunnel Warfare(线段树单点更新)

->题目请戳这 和这->题目大意,给n个点表示n个村庄,一开始都是相连的,现在有3种操作:Q x,查询第与第x个村庄相连的村庄个数;D x,摧毁掉第x个村庄;R  恢复刚摧毁的村庄。题目分析:每个点用2个状态表示,0表示被摧毁,1表示存在,因为有恢复操作,并且每次恢复上一个被摧毁的村庄,所以用一个栈存储所有被摧毁的村庄,每次R操作恢复栈顶村庄。这题关键是查询操作,如果查询的村庄x不存在,则

2013-06-09 13:17:19 926

原创 hdu4417Super Mario(线段树+离线处理)

->题目请戳这里题目大意:一个长为n的路,每个整点处有高度为h的墙,现在超级玛丽要跳过这些墙去救公主。给m个询问,每个询问包含询问区间a-b以及玛丽的弹跳高度c,求对于每个询问,玛丽能跳过这个区间多少墙。题目分析:简单的说就是求给定区间不大于c的墙的个数。对区间处理很容易想到线段树,但是线段树貌似没有查询区间小于某个数的个数的功能,又像划分树,但是划分树求的是区间第k大值。所以我们换一下思

2013-06-08 19:49:29 1280

原创 poj2528Mayor's posters(线段树+离散化+坑坑坑)

->题目请戳这里这题是个巨坑!!

2013-06-08 17:39:50 1426

原创 杭电1800Flying to the Mars(简单哈希)

->题目请戳这里题目大意:给n个数,表示n个人的等级,现在这n个人要去攻占火星,要坐扫把去,能坐在同一个扫把上的人要满足他们的等级严格递减,求最少的扫把数。题目分析:就是求一个数字串的单调递减(递增)的子序列数,也就是求出现次数最多的那个数。给定数字范围是2^30,所以用哈希做。哈希函数定义的是每个数字各位平方和,跑了四百多毫秒,效率不是很高。。。详情请见代码:#include

2013-06-08 12:21:51 1380 4

原创 poj3468A Simple Problem with Integers(线段树成段更新)

->题目请戳这里题目大意:红果果的线段树,给n个数,2种操作,Q a b,查询a到b这个区间和,C a b c,a到b区间每个数加上c。题目分析:线段树维护区间和,要加lazy标记。详情请见代码:#include #include#includeusing namespace std;const int N = 100005;typedef __int64 ll;str

2013-06-08 10:02:32 915

原创 poj1392Ouroboros Snake(欧拉回路)

->题目请戳这里题目大意:这题跟杭电的2894基本是一样的题目分析:具体建图,->请戳这里,这题要求输出的是当每次读n个二进制位的时候,所求出的字典序最小的序列的第k个数的值。只要输出具体的某个值,所以我们把答案存起来,n从1-15只算1次就行了,重复的查表即可。详情请见代码:#include #include#includeusing namespace std;c

2013-06-07 09:55:10 905

原创 杭电2894DeBruijin(欧拉回路)

->题目请戳这里题目大意:一个旋转鼓,上面均匀分成m份,每一份可以表示二进制的0或1,现在求一个最短的01序列,使任意的k个相邻的01序列表示不同的值。并输出字典序最小的一个序列。题目分析:这个序列是循环的,长度为k的二进制数表示的范围是0-2^k - 1,鼓转动一小格,当前k个二进制位与前一个状态相比,只有首尾2个二进制位发生了改变,中间的k-1位是不变的,考虑以这k-1位二进制位为点,

2013-06-07 09:10:32 1172

原创 poj1041John's trip(欧拉回路+输出路径)

->题目请戳这里题目大意:一个小镇有m条街,n个交叉口,每条街上有john的一个朋友,现在john要拜访每个朋友1次,输出字典序最小的访问街道编号。起点是输入第一组数据最小的端点。题目分析:典型的欧拉回路问题。先判断图是连通的并且所有点度数为偶数,因为这题是无向图,建图的时候每条边正反建一次。由于要字典序最小,所以要先dfs编号较小的街道,所以建图的时候稍微注意一下,我是先把所有的街道排序

2013-06-06 19:19:17 964

原创 poj2230Watchcow(简单欧拉回路)

->题目请戳这里题目大意:m条路连n个地方,这m条路是双向的,即从a到b和从b到a是不一样的。现在从1出发,沿每一条路走1遍回到起点1,给出这样的一种走法,依次输出经过的顶点,special judge。题目分析:红果果的欧拉回路问题,对每一对点,建2条有向边,最后dfs得到一条欧拉回路。这题要注意数组大小,M是边的数量,再正反建边,就是2M条边,最后有4M+1个点,所以如果要保存所有的点

2013-06-06 16:52:41 1072

原创 杭电1116Play on Words(欧拉路径(回路)的判断)

->题目请戳这里题目大意:给你一些单词,问是否能完成单词接龙,即一个单词的最后一个字母是另一个单词的首字母,每个单词都必须有,并且只能出现一次。题目分析:每个单词只取首尾字母,从首字母到尾字母建一条有向边,最后建成一张有向图,题目转化成了在这张有向图中能否找到一条欧拉路径或者回路。用并查集维护这张图可以判断图是否连通。来复习一下欧拉图的判断条件:1。对于无向图,每个顶点的度数为偶数

2013-06-06 16:45:43 1051

原创 poj3076Sudoku(我大DLX威武!16*16数独秒解!!)

->题目请戳这里题目大意:16*16数独。题目分析:建模同这篇9*9数独,就不多废话了,详情请见代码:#include #include#include#includeusing namespace std;const int N = 16 * 16 * 16 * 16 * 16 * 4 + 5;//16 * 16 * 16行16 * 16 * 4列int s[N],h[N

2013-06-01 19:21:36 2086

原创 poj3074Sudoku(DLX解9*9数独)

->题目请戳这里题目大意:填9*9数独,就不多废话了。题目分析:以前写数独是用搜索做的,略带暴力枚举,代码量比较大,效率也不高,最近学dancing links,用来解决精确覆盖问题,效率蛮高,而且代码非常优雅。关于数独转化成精确覆盖问题,这篇论文讲的很详细,就不在这里班门弄斧了,详情请见代码:#include #include#include#includeusing nam

2013-06-01 18:52:59 1733

空空如也

空空如也

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

TA关注的人

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