zoukankan      html  css  js  c++  java
  • 【封装】二维BIT

    struct BIT{
        #define maxn 1000
    
        int n, m;
        int d1[maxn][maxn], d2[maxn][maxn], d3[maxn][maxn], d4[maxn][maxn], c[maxn][maxn];
    
        inline void init(int x, int y) { n = x, m = y; }
        inline int lowbit(int &x) { return x & -x; }
    
        void modify(int x, int y, int p){
            for(int i = x; i <= n; i += lowbit(i))
                for(int t = y; t <= m; t += lowbit(t)){
                    d1[i][t] += p,  d2[i][t] += p*y;
                    d3[i][t] += p*x,  d4[i][t] += p*x*y;
                    // 单点修改写法:c[i][t] += p;
                }
        }
    
        void Modify(int x1, int y1 ,int x2, int y2, int p){ 
            modify(x1, y1, p),  modify(x1, y2 + 1, -p);
            modify(x2 + 1, y1, -p),  modify(x2 + 1, y2 + 1, p);
        }
    
        int query(int x,int y){
            int ans = 0;
            for(int i = x; i; i -= lowbit(i))
                for(int t = y; t; t -= lowbit(t)){
                    ans += (x + 1) * (y + 1) * d1[i][t];
                    ans -= (x + 1) * d2[i][t] + (y + 1) * d3[i][t];
                    ans += d4[i][t];
                    // 单点修改对应查询:ans += c[i][t];
                }
            return ans;
        }
    
        int Query(int x1, int y1, int x2, int y2){
            return query(x2, y2) + query(x1 - 1, y1 - 1) - query(x1 - 1, y2) - query(x2, y1 - 1);
        }
    };
    你只有十分努力,才能看上去毫不费力。
  • 相关阅读:
    通过strace 监控 fdatasync
    RAID 2.0
    AHCI vs NVMe
    NVMe 图解
    详解linux运维工程师入门级必备技能
    条带深度 队列深度 NCQ IOPS
    NVMe 与 AHCI
    IO负载高的来源定位 IO系列
    磁盘性能指标--IOPS 理论
    java程序员从笨鸟到菜鸟系列
  • 原文地址:https://www.cnblogs.com/214txdy/p/14023966.html
Copyright © 2011-2022 走看看