2013年9月20日
摘要: 树状数组求逆序数的应用: JapanTime Limit:1000MSMemory Limit:65536KTotal Submissions:17874Accepted:4819DescriptionJapan plans to welcome the ACM ICPC World Finals and a lot of roads must be built for the venue. Japan is tall island with N cities on the... 阅读全文
posted @ 2013-09-20 15:11 keephungry 阅读(232) 评论(0) 推荐(0)
  2013年9月18日
摘要: 在信息学竞赛中,排序是一种非常非常基本的算法,甚至不能称之为算法,因为用的套多了,今天介绍三种并不是基于比较的算法,计数排序,基数排序,桶排序。1.计数排序, 计数排序不同与快速排序或者冒泡排序,它并不是基于比较的排序,而基于比较的排序,可以证明它的时间下届是log(n!)=nlog(n); 故计数排序可以获得更好的时间复杂度,但是,计数排序对元素的大小手限制,故其实用性便大大的降低,但是在特定的算法中,巧妙的应用却能够得到很神奇的效果,如基数排序在后缀数组中的应用. 首先给定一个数组b,要求对数组b进行排序,并已知数据的范围是0到k,那么开数组c[k],下面写下伪代码: f... 阅读全文
posted @ 2013-09-18 11:18 keephungry 阅读(398) 评论(0) 推荐(0)
  2013年9月5日
摘要: 生成最小的生成树的过程其实就是寻找安全边的过程,prim和kruskal从图的两个基本构成出发,即边和点的两个不同的角度,来寻找安全边。安全边:假设集合a是最小生成树的一个子集,我们要做的就是每次寻找一条边(u,v)。将其加入到集合a中,使得集合a与边(u,v)的并集仍然是最小生成树的子集,则称这条边是安全边。定理:首先设图g=(v,e)是一个无向联通图,设集合a为e的一个最小生成树,设(s,v-s)是尊重集合a的一个切割,又设边(u,v)是横跨切割的轻量级边,则边(u,v)对于集合a来说是安全的。 1.prim(点) 算法从任意的点开始,每次在集合a和a之外的节点中的所有边汇总... 阅读全文
posted @ 2013-09-05 09:34 keephungry 阅读(300) 评论(0) 推荐(0)