代码拉取完成,页面将自动刷新
<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>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。