zoukankan      html  css  js  c++  java
  • 二维前缀和与差分

    二维前缀和

    #include<bits/stdc++.h>
    #define REP(i, a, b) for(register int i = (a); i < (b); i++)
    #define _for(i, a, b) for(register int i = (a); i <= (b); i++)
    using namespace std;
    
    const int N = 100;
    int a[N][N], n;
    
    int main()
    {
        scanf("%d", &n);
        _for(i, 1, n)
            _for(j, 1, n)
            {
                int x; scanf("%d", &x);
                a[i][j] = x + a[i-1][j] + a[i][j-1] - a[i-1][j-1];
            }
        
        int x1, y1, x2, y2;
        while(~scanf("%d%d%d%d", &x1, &y1, &x2, &y2))
            printf("%d
    ", a[x2][y2] - a[x1-1][y2] - a[x2][y1-1] + a[x1-1][y1-1]);
     
        return 0;
    }

     二维差分

    #include<bits/stdc++.h>
    #define REP(i, a, b) for(register int i = (a); i < (b); i++)
    #define _for(i, a, b) for(register int i = (a); i <= (b); i++)
    using namespace std;
    
    const int N = 100;
    int a[N][N], n, m;
    
    int main()
    {
        scanf("%d%d", &n, &m);
        _for(i, 1, m)
        {
            int x1, y1, x2, y2, p;
            scanf("%d%d%d%d%d", &x1, &y1, &x2, &y2, &p);
            a[x1][y1] += p; a[x2+1][y2+1] += p;
            a[x2+1][y1] -= p; a[x1][y2+1] -= p;
        } 
    
        _for(i, 1, n)
            _for(j, 1, n)
                a[i][j] += a[i-1][j] + a[i][j-1] - a[i-1][j-1];
        
        _for(i, 1, n)
        {
            _for(j, 1, n)
                printf("%d ", a[i][j]);
            puts(""); 
        } 
            
        return 0;
    }
  • 相关阅读:
    FastCgi与PHPfpm之间的关系
    PHP中多线程处理
    EASYUI+MVC4通用权限管理平台前言
    常用企业建站源码
    Oracle数据库同步服务
    Jquery easyui +MVC4 管理信息系统
    《自动化技术中的进给电气传动》1.1节和1.2节读书笔记
    FTP
    Samba
    rsync
  • 原文地址:https://www.cnblogs.com/sugewud/p/9937514.html
Copyright © 2011-2022 走看看