SPFA 算法
摘要:算法简介 SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。也有人说SPFA本来就是Bellman-Ford算法,现在广为流传的Bellman-Ford算法实际上是山寨版。求单源最短路的SPFA算法的全称是:ShortestPathFasterAlgorithm。 从名字我们就可以看出,这种算法在效率上一定有过人之处。 很多时候,给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。 简洁起见,我们约定有向加权图G不存
阅读全文
MultiSet容器(多元集合)
摘要:多元集合(MultiSets)和集合(Sets)相像,只不过支持重复对象。函数列表:begin()返回指向第一个元素的迭代器clear()清除所有元素count()返回指向某个值元素的个数empty()如果集合为空,返回trueend()返回指向最后一个元素的迭代器equal_range()返回集合中与给定值相等的上下限的两个迭代器erase()删除集合中的元素find()返回一个指向被查找到元素的迭代器get_allocator()返回多元集合的分配器insert()在集合中插入元素key_comp()返回一个用于元素间值比较的函数lower_bound()返回指向大于(或等于)某值的第一个
阅读全文
组合数的奇偶性
摘要:组合数的奇偶性08年安徽高中联赛的初赛题中有这么一题:多项式(1+x)^2008=a0+a1x+……+a2008x^2008,系数a1,a2,……,a2008中共有多少个偶数。(ans=2008-128=1881)看到这题,想到的就是判断c(2008,k)的奇偶性,由于没有相关知识基础就去搜了下资料。(附下)但是如何运用呢?这里似乎涉及到一点位运算的知识。10进制(2008)=2进制(11111011000)由结论:对于C(n,k),若n&k == k 则c(n,k)为奇数,否则为偶数。于是开始匹配。2008:1 1 1 1 1 0 1 1 0 0 0 0 -->0 1 0 0
阅读全文
所有的STL容器
摘要:所有的STL容器 容器(Container)的概念的出现早于模板(template),它原本是一个计算机科学领域中的一个重要概念,但在这里,它的概念和STL混合在一起了。下面是在STL中出现的7种容器: vector(向量)——STL中标准而安全的数组。只能在vector 的“前面”增加数据。 deque(双端队列double-ended queue)——在功能上和vector相似,但是可以在前后两端向其中添加数据。 list(列表)——游标一次只可以移动一步。如果你对链表已经很熟悉,那么STL中的list则是一个双向链表(每个节点有指向前驱和指向后继的两个指针)。 set(集合)—...
阅读全文