Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅关注editing this post一个问题。
5年前关闭。
Improve this question
(好的,所以我先前的问题由于过于广泛而搁置,因此我在这里缩小范围。)
我希望参加算法编程竞赛,很多问题取决于使用对特定操作非常有用的专用数据结构-例如,Fenwick树允许计算其中的值列表的前缀和。对数时间。
在现代 C++中(即使用C++ 11功能)实现此类数据结构的首选方式是什么?是否可以使用STL算法和容器代替编写
我正在寻找在IOI风格的比赛中经常有用的Fenwick树,分段树,挖土和其他一些数据结构,但是一般策略已经足够了。
想改善这个问题吗?更新问题,使其仅关注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::transform
或std::foreach
编写。
09-25 19:56