随笔分类 -  ZOJ

摘要:二分比较好的二分题目,需要花点脑筋想到,另外写的细节也多题意:比较好懂,a数组有n个元素,b数组有m个元素,a数组的元素分别和b数组的元素相乘得到新的元素,那么一共会得到n*m个元素,将这些元素降序排序,找到第k大的元素是谁为检验算法正确性,一个暴力的程序很容易写出来,关键是正解是什么,ab数组的元素个数都很多,暴力会超时,而且空间也不允许使用二分,而且是嵌套的二分,两个二分的目的不同外层二分是位了枚举答案,内层二分是检验当前的答案是否符合做法:先将ab数组降序排序,那么我们知道a[1]*b[1]是最大值,a[n]*b[m]是最小值,其他元素的乘积一定在这个区间内,我们并不知道答案是多少,所以 阅读全文
posted @ 2013-06-08 19:11 Titanium 阅读(397) 评论(0) 推荐(0)
摘要:LCA题意:给一个无根树,有q个询问,每个询问3个点,问将这3个点连起来,距离最短是多少,LCA的模板题,分别求LCA(X,Y),LCA(X,Z),LCA(Y,Z),和对应的距离,然后3个距离相加再除以2就是这个询问的结果对于一对点,x,y, lca = LCA(x,y) , 那么点x到点y的距离为 dir[x] + dir[y] - 2 * dir[lca] ; 其中dir[u] 表示点u到树根的距离由于是模板题,只给代码,详细的讲解可以在学习笔记里面找《LCA与RMQ》在线算法:LCA转RMQ#include <iostream>#include <cstdio># 阅读全文
posted @ 2013-05-26 22:10 Titanium 阅读(1117) 评论(1) 推荐(0)
摘要:并查集选拔赛的题目。题意:如图所示是一些六边形的单元,一开始初始化所有的单元都是海洋,然后给你一个序列,就是一个单元坐标的序列。如果这个单元是个海洋,看能不能把它变成陆地,能变成陆地的条件是,如果它周围(也就是和它直接相连的那六个单元)已经是陆地,加入这块会使总陆地面积变大,但是面积有个限制值s,一块陆地的总面积不能超过s,如果加入这块不超过限制那么就加入,并且这个块海洋变成了陆地,如果超过了限制值那么这块单元要忽略,依然是海洋。如果是这块单元已经是陆地了,那么直接跳过。一整块陆地的总面积就是它拥有的单元数要你输出最后有多少块大陆地,每一块的面积是多少,面积按升序输出这里要注意,好像(1,1) 阅读全文
posted @ 2013-03-12 17:14 Titanium 阅读(259) 评论(0) 推荐(0)