(好的,所以我之前的问题被搁置太宽,所以我在这里缩小范围。)
我正在寻求参与算法编程竞赛,许多问题都取决于使用专门的数据结构,这些数据结构非常适合某种操作 - 例如,Fenwick树允许计算列表的前缀和对数时间的值。
在现代 C ++中实现此类数据结构的首选方法是什么(即使用C ++ 11功能)?是否可以使用STL算法和容器而不是编写struct
并手动编码每个操作?
我正在寻找Fenwick树,细分树,treaps和其他一些在IOI风格的竞赛中常用的数据结构,但是一般策略绰绰有余。
答案 0 :(得分:2)
这里有一个fenwick树的实现:http://www.algorithmist.com/index.php/Fenwick_tree
它使用std :: vector作为底层容器。
可以说,方法increase
可以用std::transform
或std::foreach
来编写。