SkyWT

我们的征途是星辰大海。

线段树(懒标记)总结

线段树是非常基础的算法了……

线段树是一种二叉树,可视为树状数组的变种,最早出现在2001年,由程序竞赛选手发明。我们ZS老师说过:“所有可以用树状数组解决的题目都可以用线段树解决,但是部分线段数可以解决的题目却无法用树状数组解决。”由此可见线段树十分强大……

Read more...

网络流最大流算法总结(Edmonds-Karp 算法+Dinic 算法)

网络流(network-flows)是一种类比水流的解决问题方法,与线性规划密切相关。网络流的理论和应用在不断发展,出现了具有增益的流、多终端流、多商品流以及网络流的分解与合成等新课题。网络流的应用已遍及通讯、运输、电力、工程规划、任务分派、设备更新以及计算机辅助设计等众多领域。

(2018.08.29 更新此文,你没有阅读过的船新版本)

Read more...

SPFA 算法总结

2019.10.11 Upd:这是 ZS 时期写的一篇非常 naive 的博客,别看了。
SPFA 会被卡,Dij 才最好。


SPFA真是最好的单源最短路算法,没有之一。

SPFA全称是Shortest Path Faster Algorithm,直译过来就是“最短路更快算法”,从这个名称就能看出SPFA效率很高。SPFA加上SLF优化以后被称作单源最短路的“无敌”,时间复杂度可以达到O(ke)(k表示平均每个节点入队次数,k≤2,e表示边数),可以刷负边权。

Read more...

C++STL中集合的使用总结

C++ STL 里的 set,顾名思义就是集合。和数学里的集合一样,C++ STL 里的集合也具有互异性,即每个元素最多只出现一次。如果需要某个值出现多次就可以用 multiset。

集合的好处是,集合里存的元素都是从小到大排好序的。这和插排不同,集合的复杂度是 log2(n),对解决一些题目十分有用。

Read more...