zoukankan      html  css  js  c++  java
  • 差分

    一维差分

    const int N=1e5+10;
    int a[N],b[N];
    int n,m;
    
    int main()
    {
        cin>>n>>m;
    
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            b[i]=a[i]-a[i-1];
        }
    
        while(m--)
        {
            int l,r,x;
            cin>>l>>r>>x;
            b[l]+=x;
            b[r+1]-=x;
        }
        
        for(int i=1;i<=n;i++) b[i]+=b[i-1];
        
        for(int i=1;i<=n;i++) cout<<b[i]<<' ';
        cout<<endl;
        //system("pause");
    }
    

    二维差分

    const int N=1010;
    int a[N][N],b[N][N];
    int n,m,q;
    
    void insert(int x1,int y1,int x2,int y2,int c)
    {
        b[x1][y1]+=c;
        b[x1][y2+1]-=c;
        b[x2+1][y1]-=c;
        b[x2+1][y2+1]+=c;
    }
    
    int main()
    {
        cin>>n>>m>>q;
    
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                scanf("%d",&a[i][j]);
                insert(i,j,i,j,a[i][j]);
            }
    
        while(q--)
        {
            int a,b,c,d,x;
            cin>>a>>b>>c>>d>>x;
            insert(a,b,c,d,x);
        }
    
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1];
                printf("%d ",b[i][j]);
            }
            puts("");
        }
            
        //system("pause");
    }
    
  • 相关阅读:
    去除字符串中多余空格
    day02-03 字符编码
    eclipse与myeclipse区别
    xz解压和zip解压
    yum安装
    防火墙
    查看和操作HBA卡
    复制linux虚拟机后网卡不能用的解决方法
    关闭IPv6
    更改root密码
  • 原文地址:https://www.cnblogs.com/fxh0707/p/13562017.html
Copyright © 2011-2022 走看看