Peng Lv

毋意,毋必,毋固,毋我。 言必行,行必果。

导航

上一页 1 ··· 4 5 6 7 8 9 10 11 12 13 下一页

2010年4月27日 #

POJ 2553 The Bottom of a Graph (强连通分量+缩点)

摘要: 题意:给定n个点和他们的有向关系,求出这个有向图中所有的sink点,sink点定义:如果一个点u为sink点,那么他所有能到达的点v,也能有一条通路v->u存在。思路:根据sink点的定义,我们很容易想到了强连通分量,但是思考如下情形:如果强连通分支A中有一点u,可以到到强连通分支B中的一点v,由强连通分支定义,v肯定无法到达u,那么A中所有的就不是sink点。所以在求完强联通分支后,还要检... 阅读全文

posted @ 2010-04-27 18:36 Lvpengms 阅读(1144) 评论(0) 推荐(0) 编辑

POJ 1949 Chores (DP+拓扑)

摘要: 题意:有n个任务,每个任务k可能与之前1-k个任务有关,就是说只有当其所有的先前任务完成时,这个任务才可以开始,有给定了每个任务的执行时间,求要完成所有的任务,最少需要多少时间。思路:由于任务前后有联系,所以自然想到了有向图,DP,拓扑,仔细想想发现,一个任务至于前k个任务有关,所以我们就用不到拓扑排序了,只需要记录当前任务最快完成的时间即可,    end_time[k] = max{end_t... 阅读全文

posted @ 2010-04-27 18:26 Lvpengms 阅读(660) 评论(0) 推荐(0) 编辑

POJ 2570 Fiber Network (传递闭包)

摘要: 题意:给定n个城市之间的有向图,每条边是以字母标示的,输出在每条可行线路u->v中,其所经过的每一段线路的相同的字母。思路:由于两点之间有多条线路,所以想到了对每个字母进行floyd,最后集中输出,然后华丽的TLE了.......后来知道可以用位运算优化,汗......没想出来.....然后就可以AC了。[代码]TLE code:[代码] 阅读全文

posted @ 2010-04-27 18:20 Lvpengms 阅读(444) 评论(0) 推荐(0) 编辑

2010年4月24日 #

POJ 2227 The Wedding Juicer (BFS+优先队列)

摘要: 题意:给定n*m地图,其中高度不同,问最多能存多少水(和木桶一样,最外层不能存水)。思路:黑书上有讲,从最外围的点开始加入到队列,每次取高度最小的点,然后看其子结点,如果高度大于自己那么加入队列,否则填充水量和自己高度相同,加入队列,可以证明这样做可以得到最优解,因为开始时最外围的点是不能够存水的,因此这个算法就是从"外"(高度最小)向"里"找,依次删除不能够存水的节点即可。PS: 这个题做的太戏剧性了,敲完代码,发现机房机子中毒,exe文件没法执行(又要重装了.....),不能Debug,编译一遍检查无误,然后狠狠心裸交,结果有个变量未定义,返回RE. 阅读全文

posted @ 2010-04-24 17:35 Lvpengms 阅读(651) 评论(0) 推荐(0) 编辑

POJ 3687 Labeling Balls (拓扑排序)

摘要: 题意:给定m个球的关系,求出具有最小字典序的各个球的重量。思路:拓扑排序,但是不能建正向图,只能建反向图,具体解释见Answeror牛:  http://www.answeror.com/archives/23913PS:图论中的技巧太多,只靠做题感觉是亡羊补牢,只有把理论知识搞透彻,才能真正明白各个题中隐藏的数学原理,向这样正向和反向图中的细微区别也就yin不了人了...[代码] 阅读全文

posted @ 2010-04-24 11:20 Lvpengms 阅读(1417) 评论(0) 推荐(0) 编辑

POJ 1990 MooFest (树状数组)

摘要: 题意:由n头牛,不同的听力值v,当i,j想要通话时,需要max(v(i),v(j))*(dist[i]-dist[j])的volume,问这n*(n-1)/2对牛总共的volume时多少。思路:非常好的一道树状数组,自己想了很长时间没想起来,最后看了结题报告才恍然大悟,对n头牛按v进行排序,由小到大,tre_sumx[i.x]记录前i头牛于x的坐标的总和,tre_cnt[i.x]记录前i头牛坐标低... 阅读全文

posted @ 2010-04-24 10:08 Lvpengms 阅读(683) 评论(0) 推荐(0) 编辑

POJ 1195 Mobile phones (树状数组)

摘要: 题意:给定n*n矩阵,和几种在线操作,包括对某一点(x,y)值修改,查询一个矩形(x1,y1,x2,y2)的元素和。思路:典型的在线查询,可用树状数组实现,查询矩形和时,稍微注意以下就可以了:  sum(x2,y2)+sum(x1-1,y1-1)-sum(x1-1,y2)-sum(x2,y1-1);还要注意树状数组的修改操作modify(index,delta)中的index要>0。[代码] 阅读全文

posted @ 2010-04-24 10:01 Lvpengms 阅读(627) 评论(0) 推荐(0) 编辑

POJ 3067 Japan (树状数组)

摘要: 题意:顺序给两组平行的点依次编号1~N和1~M,给定K个线段在两组点之间,求相交(cross)的线段对有多少个,同一个起点或终点不算相交。思路:由于题目涉及到统计和的问题,自然可以交给树状数组来做,方法和Cows差不多现对线段进行排序,按w由大到小,如果w相等,按e从大到小(必要),最后遍历,修改查询就可以了。[代码] 阅读全文

posted @ 2010-04-24 09:56 Lvpengms 阅读(656) 评论(0) 推荐(0) 编辑

POJ 2155 Matrix (树状数组)

摘要: 题意:给定一个0-1矩阵,在线对(x1,y1),(x2,y2)之间的元素置反,在线对特定矩阵求和。思路:一道二维树状数组,思路还是挺清晰的,由于是0-1矩阵,只需用tre[][]记录一个元素被置反的次数即可,当对(x1,y1),(x2,y2)区间置反时,需要改动四个地方就是4个角就可以了。为什么呢?如下图,假设A区未需要置反的区域,因为改动A区的左上角时,由树状数组的性质知:A,B,C,D4个区域... 阅读全文

posted @ 2010-04-24 09:51 Lvpengms 阅读(1796) 评论(2) 推荐(0) 编辑

2010年4月22日 #

POJ 2481 Cows (树状数组)

摘要: 题意:给定n个区间,问每个区间所覆盖的区间的个数。思路:第三道树状数组,终于有感觉了,要不就傻X了,对区间排序,然后树状数组查询,思路和Stars那道差不多,不过还要处理重合区间的情况,只需排序后O(N)扫描一遍就好了。[代码] 阅读全文

posted @ 2010-04-22 18:45 Lvpengms 阅读(595) 评论(0) 推荐(0) 编辑

POJ 3321 Apple Tree (树状数组)

摘要: 题意:有n个苹果被树枝连接,这是一棵树!有两种操作C ind 和 Q ind,前者是摘下ind苹果,如果没有,哪么会长出新的一个,后者是查询ind有几个子苹果。思路:第二道树状数组,自己想了很久不知道怎么转化,原来是利用树的性质,dfs一遍,记录每个节点的low和high值,那么他的子结点的low值和high值肯定在[low,high]之间,然后就可以通过tre[high[i]]-tre[low[... 阅读全文

posted @ 2010-04-22 18:42 Lvpengms 阅读(797) 评论(0) 推荐(1) 编辑

POJ 2352 Stars (树状数组)

摘要: 题意:给定一组点,问二维空间中各个点的等级是多少,点的等级定义如下:其左下方点的个数。思路:昨天看了树状数组,然后怀着无比激动的心情开始了,一阵子思考--不会,在一阵子思考--还是不会,只能硬着头皮翻报告......终于明白树状数组是怎么应用了....汗了....到现在才开始学树状数组....不管怎么说,树状数组的确是一个强大的在线数据结构![代码] 阅读全文

posted @ 2010-04-22 18:37 Lvpengms 阅读(1061) 评论(2) 推荐(0) 编辑

2010年4月21日 #

POJ 1984 Navigation Nightmare (并查集)

摘要: 题意:给定一组线段和方向,然后查询点的距离。思路:并查集的基本操作,在记录坐标偏移的时候注意一下,两个点之间和他们的根之间的坐标偏移关系可以用关系式表达出来,只要在纸上写一写就ok。查询输入的时候还是按ind排下序在处理线段。[代码] 阅读全文

posted @ 2010-04-21 18:04 Lvpengms 阅读(1050) 评论(0) 推荐(0) 编辑

POJ 2922 Honeymoon Hike (dfs+二分答案+区间枚举)

摘要: 题意:给定一个n*n地图和高度,一个人从左上角地图开始,需要走到右下角的地图,问他走的路程中所到达的最大高度和最小高度的差最小是多少。思路:二分答案,对于每一个高度差,可以用dfs或bfs检验是否能够到达目的地,如果对每个高度差,用dfs,每次传以前的最大和最小高度,然后在更新,这样检验会超时,于是可以改用枚举高度区间的办法来缩减时间(想了半天没想出来....)。总的来所,一个不错的搜索题目。[代... 阅读全文

posted @ 2010-04-21 18:00 Lvpengms 阅读(444) 评论(0) 推荐(0) 编辑

2010年4月17日 #

POJ 2479 Maximum Sum (DP)

摘要: 题意:给定n个数,求两段连续子列的最大和。思路:先从左向右dp,求出一段连续子列的最大和,再从右向左dp,求出两段连续子列的最大和,方法还是挺经典的。[代码] 阅读全文

posted @ 2010-04-17 10:19 Lvpengms 阅读(814) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 13 下一页