相关疑难解决方法(0)

(数字和 - 数字)在位编程中意味着什么?

例如:

int get(int i) {
    int res = 0;
    while (i) {
        res = (res + tree[i]) % MOD;
        i -= ( (i) & (-i) );
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)

树更新功能:

void update(int i, int val) {
    while (i <= m) {
        tree[i] = (tree[i] + val) % MOD;
        i += ( (i) & (-i) );
    }
}
Run Code Online (Sandbox Code Playgroud)

你能用它解释一下他们在代码中做了什么( (i) & (-i) )吗?

c++ bit bitwise-and fenwick-tree

64
推荐指数
3
解决办法
4469
查看次数

(数字)&( - 数字)的含义

是什么意思 (number) & (-number)?我搜索了它但却无法找到意义

我想i & (-i)在for循环中使用:

for (i = 0; i <= n; i += i & (-i))
Run Code Online (Sandbox Code Playgroud)

c c++

11
推荐指数
2
解决办法
4255
查看次数

x + = x&-x是什么意思?

我发现很多人使用x += x & -xx -= x & -x解决了区间树问题。你能解释一下这个方程的意思吗?

void update(int m, int x) { 
    m++;
    while (m < N) {
        t[m] = t[m] + x;
        m += m & -m;
    }
}
int query(int m) { 
    int result= 0;
    m++;
    while (m > 0) {
        result = result + t[m];
        m -= m & -m;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

c++ algorithm tree bitwise-operators intervals

3
推荐指数
2
解决办法
141
查看次数