摘要: 题目大意:在h*w 高乘宽这样大小的 board上要贴广告,每个广告的高均为1,wi值就是数据另给,每组数组给了一个board和多个广告,要你求出,每个广告应该贴在board的哪一行,如果实在贴不上,就输出-1;这个题目也难以想到居然是用线段树来做我们需要考虑的是,线段树究竟表示的是什么数据。在这个题目里,由于每个广告的高都为1,是不是好像感觉每一行都是一个叶子节点一样。没错,就是这样。。。化抽象为具体一点,那就是把这个board给竖起来,这样最底部的孩子存贮了当前行的空闲宽度,每个父节点都是左右孩子的max。其实思路这样理一下,感觉其实很简单,是把。还要注意的一点是,虽然题目说h 和 w高达 阅读全文
posted @ 2013-08-15 10:05 KRisen 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题目大意:依次描述了一个N个人的队伍,每个人所站的序号以及他的价值,依次描述每个人的过程中,存在序号相同的人,表示该人插入到了前一个序号相同的人的前面。最后输出整个队伍的值排列情况。这个题目确实难以想到居然可以用线段树做,之前还脑残去敲什么链表,结果发现链表这玩意儿真不是一般的垃圾,好多地方根本就无法对时间进行优化。当然了,就算告诉了你用线段树做,可能还是会很头疼,这里涉及插队操作。。而且线段树具体是存放什么东西的呢线段树就是为了模拟当前队伍的空位数,比如一个4人队伍,Root肯定是值为4 然后左右孩子都为 2 2 ,最底下4个孩子均为1,表示该位置还可以插入几个人插队操作是比较蛋疼的,为了避 阅读全文
posted @ 2013-08-15 09:51 KRisen 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 终于线段树还是有所领悟,发现对一个算法真的是,一开始云里雾里,后来这些天狂搞图论,数据结构,把KMP,Manacher,最短路,最小生成树 都狂弄了一下之后,发现再来弄线段树就容易多了,至少建树,更新什么的,我脑海里已经可以自己构图了。。所以,一个心得是,算法可以让脑子变的灵活聪明,前几天看的云里雾里的东西,过几天就会有领悟了。好了,进入正题。挑了一道还算可以的线段树题目,上午A了一道,完全是纯线段树水题,这题涉及懒惰标记,感觉高端了好多。。就算用了懒惰标记,仍然跑了将近3000MS,话说最近做图论题目发现,G++总是比C++要多几百MS(数据量本身比较大的时候)。。。而且尤其碰到几个坑题,用 阅读全文
posted @ 2013-08-13 17:27 KRisen 阅读(209) 评论(0) 推荐(0) 编辑
摘要: Big Christmas TreeTime Limit:3000MSMemory Limit:131072KTotal Submissions:19029Accepted:4058DescriptionChristmas is coming to KCM city. Suby the loyal civilian in KCM city is preparing a big neat Christmas tree. The simple structure of the tree is shown in right picture.The tree can be represented as 阅读全文
posted @ 2013-08-12 17:12 KRisen 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 受教了,感谢玉斌大神的博客。这道题最难的地方就是操作2,将一个集合中的一个点单独移到另一个集合,因为并查集的性质,如果该点本身作为root节点的话,怎么保证其他点不受影响。玉斌大神的思路很厉害,受教受教,即,由于题目最终输出集合的元素个数与权值总和,故添加一个delete操作,将该点(设为P)所在集合的rank和sum值减小,将p的father引向一个从没定义过的点,(可以设置为(总数++)点),这样,虽然看似P还留在原集合,但仅仅作为一个空骨架,并不对集合的rank和sum产生影响。具体实现,需要借助一个辅助数组 id[], id[]初始和father[]相同,但一旦需要删除操作,即将id[ 阅读全文
posted @ 2013-08-10 15:33 KRisen 阅读(354) 评论(0) 推荐(0) 编辑
摘要: Prim算法很好理解,特别是学完了迪杰斯特拉算法之后,更加能理解Prim的算法思想和迪杰斯特拉算法差不多,由于最后要形成连通图,故任意指定一个点,作为初始点,遍历所有点,以当前最小权值的点(和迪杰斯特拉不同,每个点的值就由边的权值确定)每次求出其他点的值。在判断联通图的关系时,并查集是个十分高效的手段,通过并查集能够判断出当前是否成环(在Kruskal算法里用并查集判断是否成环非常重要),还有判断当前是否有路可通通过HDU 1879来分析Prim算法,以及并查集在MST中的应用继续畅通工程Time Limit:1000MSMemory Limit:32768KB64bit IO Format: 阅读全文
posted @ 2013-08-09 22:14 KRisen 阅读(300) 评论(0) 推荐(0) 编辑
摘要: C -六度分离Time Limit:1000MSMemory Limit:32768KB64bit IO Format:%I64d & %I64uSubmitStatusDescription1967年,美国著名的社会学家斯坦利・米尔格兰姆提出了一个名为“小世界现象(small world phenomenon)”的著名假说,大意是说,任何2个素不相识的人中间最多只隔着6个人,即只用6个人就可以将他们联系在一起,因此他的理论也被称为“六度分离”理论(six degrees of separation)。虽然米尔格兰姆的理论屡屡应验,一直也有很多社会学家对其兴趣浓厚,但是在30多年的时间 阅读全文
posted @ 2013-08-07 16:27 KRisen 阅读(193) 评论(0) 推荐(0) 编辑
摘要: Choose the best routeTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5273Accepted Submission(s): 1680Problem DescriptionOne day , Kiki wants to visit one of her friends. As she is liable to carsickness , she wants to arrive at her friend’s home as 阅读全文
posted @ 2013-08-07 15:54 KRisen 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 初识最短路,今天只弄了一个迪杰斯特拉算法,而且还没弄成熟,只会最基本的O(n^2),想弄个优先队列都发现尼玛被坑爆了,那个不应该用迪杰斯特拉算法写表示还是不会优化版的迪杰斯特拉算法,(使用优先队列),只会普通的O(n^2);用HDU_3790来详解这个算法吧。最短路径问题Time Limit:1000MSMemory Limit:32768KB64bit IO Format:%I64d & %I64uSubmitStatusDescription给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最 阅读全文
posted @ 2013-08-06 23:33 KRisen 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 关于manacher算法,似乎在学完KMP之后,比较容易上手,虽然有些原理方面,我没有理解的太深。Manacher就是解决回文串的问题,求一个字符串中的最长回文子串。Manacher算法首先对字符串进行处理:在所有字符之间插入‘#’,这样的好处是,无论最长回文子串是奇数个或者是偶数个,都可以进行处理。处理过程是这样的假设原串是这样的1 2 3 4 5a b b a d处理完成一个新数组0 1 2 3 4 5 6 7 8 9 10 11 12? # a # b # b # a # d # 0 1 2 1 2 5 2 1 2 1 2 1首尾设置完全不相干的字符,是为了检测回文时,不会被算... 阅读全文
posted @ 2013-08-06 13:33 KRisen 阅读(256) 评论(0) 推荐(0) 编辑