Closed. This question needs to be more focused。它当前不接受答案。












想改善这个问题吗?更新问题,使其仅关注editing this post一个问题。

5年前关闭。



Improve this question




(好的,所以我先前的问题由于过于广泛而搁置,因此我在这里缩小范围。)

我希望参加算法编程竞赛,很多问题取决于使用对特定操作非常有用的专用数据结构-例如,Fenwick树允许计算其中的值列表的前缀和。对数时间。

现代 C++中(即使用C++ 11功能)实现此类数据结构的首选方式是什么?是否可以使用STL算法和容器代替编写struct和手动编码每个操作?

我正在寻找在IOI风格的比赛中经常有用的Fenwick树,分段树,挖土和其他一些数据结构,但是一般策略已经足够了。

最佳答案

这里有一个fenwick树的实现:http://www.algorithmist.com/index.php/Fenwick_tree

它使用std::vector作为基础容器。
可以说increase方法可以用std::transformstd::foreach编写。

09-25 19:56