zoukankan      html  css  js  c++  java
  • 上帝造题的七分钟(树桩数组乱搞)

    类比一维的树桩数组,进行二维的操作

    需要差分数组,从别的博客应该可以找的比较好的图的啦

    题面

    #include<bits/stdc++.h>
    #define lowbit(x) x&(-x)
    using namespace std;
    int n,m,num,x,y,xx,yy;
    char c[3];
    const int N=2050;
    struct node
    {
        int tree[N][N];
        int query(int x,int y)
        {
            int res=0;
            for (int i=x;i>=1;i-=lowbit(i))
             for (int j=y;j>=1;j-=lowbit(j))
             res+=tree[i][j];
            return res; 
        }
        void add(int x,int y,int num)
        {
            for (int i=x;i<=n;i+=lowbit(i))
             for (int j=y;j<=n;j+=lowbit(j))
             tree[i][j]+=num;
        }
    } A,Ai,Aj,Aij;
    void add(int x,int y,int num)
    {
        A.add(x,y,num);
        Ai.add(x,y,num*x);
        Aj.add(x,y,num*y);
        Aij.add(x,y,num*x*y);
    }
    int ans(int x,int y)
    {
        return A.query(x,y)*(x*y+x+y+1)-
               Ai.query(x,y)*(y+1)-
               Aj.query(x,y)*(x+1)+
               Aij.query(x,y);
    }
    int read()
    {
        int x=0,f=1;char ch=getchar();
        while (ch<'0'||ch>'9') {if (ch=='-') f=-1;ch=getchar();}
        while (ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    int main()
    {
        scanf("X ");
        n=read();m=read();
        while (~scanf("%s",&c))
        {
            x=read();y=read();xx=read();yy=read();
            if (c[0]=='L')
            {
                num=read();
                add(x,y,num);
                add(x,yy+1,-num);
                add(xx+1,y,-num);
                add(xx+1,yy+1,num);
            }
            else {
                printf("%d
    ",ans(xx,yy)-ans(x-1,yy)-ans(xx,y-1)+ans(x-1,y-1));
            }
        }
        return 0;
    }
    慢即是快,细则是能,于小处铸迤逦
  • 相关阅读:
    白书上的BellmanFord模板
    c#中的分部类和分部方法
    c#类
    浪潮gs开发平台学习平台快速开发入门
    c#学习积累
    自定义属性编辑器
    hibernate 中的hql,nativesql ,list(),iterate() 的使用规则
    c#继承
    浪潮gs中间件服务器,客户端,数据库sqlserver安装注意事项
    c#接口
  • 原文地址:https://www.cnblogs.com/Hale522520/p/10623987.html
Copyright © 2011-2022 走看看