IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 计蒜客-T1320-子矩阵求和 -> 正文阅读

[C++知识库]计蒜客-T1320-子矩阵求和

?

?解题技巧:

?

?

#include<bits/stdc++.h>
using namespace std;

//因为n*m<=100000,所以可能出现1*100000的极端情况,
//但是又不能开100000*100000的数组,所以要用到vector
vector<int>a[100005];

int main(){
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            int k;
            cin>>k;
            a[i].push_back(k);
        }
    }

    //求二维数组前缀和

    //1、自己想的笨方法
//    for(int i=0;i<n;i++)
//    {
//        int row_cnt = 0;
//        for(int j=0;j<m;j++)
//        {
//            int pre_cnt = 0;
//            if(i>0&&j>=0)
//            {
//                pre_cnt = c[i-1][j];
//            }
//            row_cnt += a[i][j];
//            c[i].push_back(row_cnt + pre_cnt);
//        }
//    }

    //2、简单方法
    for(int i=0;i<n;i++)
    {
        for(int j=1;j<m;j++)
        {
            a[i][j]+=a[i][j-1];//先把这行前面的加到本格
        }
    }
    for(int i=1;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            a[i][j]+=a[i-1][j];//再把<=这列对应前面的行加到本格
        }
    }

    int q_num;
    cin>>q_num;
    for(int i=0;i<q_num;i++)
    {
        int x1,y1,x2,y2;
        cin>>x1>>y1>>x2>>y2;
        int res = 0;
        res += a[x2-1][y2-1];
        //考虑边界情况决定加不加
        if(x1>1)
        {
            res-=a[x1-2][y2-1];
        }
        if(y1>1)
        {
            res-=a[x2-1][y1-2];
        }
        if(x1>1&&y1>1)
        {
            res += a[x1-2][y1-2];
        }
        cout<<res<<endl;
    }

    return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 12:43:52  更:2022-03-06 12:47:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:50:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码