• 牛客训练六:海啸(二维树状数组+vector函数的使用)


    题目链接:传送门

    思路:

    二维树状数组,

    vector(first,last)函数中assign函数相当于将first中的函数清空,然后将last中的值赋值给first。

    参考文章:传送门

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<vector>
    using namespace std;
    const int maxn = 1e6+10;
    vector <vector <int> >vc;
    int n,m;
    int lowbit(int x)
    {
        return x&(-x);
    }
    void update(int x,int y)
    {
        int i,j;
        for(i=x;i<=n;i+=lowbit(i))
            for(j=y;j<=m;j+=lowbit(j))
            vc[i][j]+=1;
    }
    int query(int x,int y)
    {
        int i,j,ans=0;
        for(i=x;i>0;i-=lowbit(i))
            for(j=y;j>0;j-=lowbit(j))
            ans+=vc[i][j];
        return ans;
    }
    int get_sum(int x,int y,int A,int B)
    {
        return query(A,B)+query(x-1,y-1)-query(x-1,B)-query(A,y-1);
    }
    int main(void)
    {
        int i,j,x,y,A,B,q,d;
        while(~scanf("%d%d%d",&n,&m,&d)){
            vc.assign(n+2,vector <int>(m+2,0));
            for(i=1;i<=n;i++)
                for(j=1;j<=m;j++)
                {
                    scanf("%d",&x);
                    if(x>=d) update(i,j);
                }
            scanf("%d",&q);
            while(q--){
                scanf("%d%d%d%d",&x,&y,&A,&B);
                printf("%d
    ",get_sum(x,y,A,B));
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    js-21点小游戏
    js-打印出现最多次的字母
    盒模型浮动
    九九乘法表
    猫眼-湄公河行动电影介绍页面
    (day4)用css画三角形以及红旗
    cookie的使用
    用Servlet校验密码2
    Servlet登录验证
    Servlet概述
  • 原文地址:https://www.cnblogs.com/2018zxy/p/10349155.html
Copyright © 2020-2023  润新知