1 Star 2 Fork 0

rlmnsk/算法与数据结构

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
fenwick.sublime-snippet 1.38 KB
一键复制 编辑 原始数据 按行查看 历史
rlmnsk 提交于 2023-02-14 07:34 . modify 小bug
<snippet>
<content><![CDATA[
template<typename T>
class Fenwick {
int limit = 0, op;
T *bit;
T (*cal)(T &a, T &b);
public:
~Fenwick() {
if (!limit) return;
delete[] bit;
}
Fenwick() {
}
void setval(const Fenwick& fenwick) {
this->limit = fenwick.limit;
this->op = fenwick.op;
this->bit = new T[fenwick.limit + fenwick.op]();
this->cal = fenwick.cal;
}
Fenwick &operator=(const Fenwick& fenwick) {
setval(fenwick);
return *this;
}
Fenwick(const Fenwick<T>& fenwick) {
setval(fenwick);
}
Fenwick(int n, int op = 2, T (*m_cal)(T &a, T &b) = [](auto &a, auto &b) {
return a + b;
}) : limit(n + op), op(op) {
bit = new T[n + op + 1]();
cal = *m_cal;
}
T query(int idx) {
T res = 0;
for (idx += op; idx > 0; idx -= idx & -idx) {
res = cal(res, bit[idx]);
}
return res;
}
void modify(int idx, T val) {
for (idx += op; idx <= limit; idx += idx & -idx) {
bit[idx] = cal(bit[idx], val);
}
}
};
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<!-- <tabTrigger>hello</tabTrigger> -->
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>source.python</scope> -->
</snippet>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/rlmnsk/algorithm-and-data-structure.git
git@gitee.com:rlmnsk/algorithm-and-data-structure.git
rlmnsk
algorithm-and-data-structure
算法与数据结构
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385