首页 > 编程语言 >前缀和求解(c++)

前缀和求解(c++)

时间:2024-01-17 10:06:46浏览次数:27  
标签:const 前缀 求解 int scanf d% c++ 数组

数组an a1 a2 ... an

前缀和 Si = a1 + a2 + ... + ai

①如何求

②作用

// 一维数组前缀和的计算
#include <iostream>
 
using namespace std;
 
const int N = 100010;
int a[N], s[N];
int n, m;
 
int main()
{
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i ++)    scanf("%d", &a[i]);
 
    for(int i = 1; i <= n; i ++)    s[i] = s[i - 1] + a[i]; // 前缀和的初始化
    while(m --)
    {
        int l, r;
        scanf("%d%d", &l, &r);
        printf("%d\n", s[r] - s[l - 1]); // 区间和的计算
    }
    return 0;
}
// 二位数组矩阵前缀和计算
#include <iostream>
 
using namespace std;
 
const int N = 1010;
 
int n, m, q;
int a[N][N], s[N][N];
 
int main()
{
    scanf("%d%d%d", &n, &m, &q);
    
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            scanf("%d", &a[i][j]);
  
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            s[i][j] = s[i-1][j] + s[i][j-1] - s[i-1][j-1] + a[i][j];
    
    while(q--)
    {
        int x1, y1, x2, y2;
        scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
        printf("%d\n", s[x2][y2] - s[x1-1][y2] - s[x2][y1-1] + s[x1-1][y1-1]);
    }
    return 0;
}

标签:const,前缀,求解,int,scanf,d%,c++,数组
From: https://blog.51cto.com/u_16492348/9284794

相关文章

  • C++11稳定性与兼容性机制
    字符串的原始字面量使用样例:R“xxx(rawstring)xxx”其中括号内的即是原始字面量,可以直接表示字符串而不需要做转义,需注意括号前后的xxx字符串会被忽略且必须一样stringstr="D:\hello\world\test.text";//1cout<<str<<endl;stringstr1="D:\\hello\\world\\tes......
  • c++语法
    基本语法C++是一种通用的编程语言,具有面向对象的特性。以下是一些C++的基本语法:注释:在C++中,注释可以使用//表示单行注释,或者使用/**/表示多行注释。cppCopycode/*这是多行注释*/头文件:C++中使用头文件来引入库和声明函数。#include<iostream>//输......
  • c++基础
    c++基础#include<iostream>usingnamespacestd;//定义类AAclassAA{private:inta;//私有数据成员apublic://构造函数,用于初始化aAA(intvalue){a=value;}//公有成员函数,用于获取a的值intGetValue(){retur......
  • C++:GDAL中CreateCopy()函数生成的栅格图像如何修改波段数?
      本文介绍基于C++语言GDAL库,为CreateCopy()函数创建的栅格图像添加更多波段的方法。  在C++语言的GDAL库中,我们可以基于CreateCopy()函数与Create()函数创建新的栅格图像文件。其中,CreateCopy()函数需要基于一个已有的栅格图像文件作为模板,将模板文件的各项属性信息(例如空......
  • C++学习日记 2024-1-16
    开始学习C++几天了,之前没有记录,从现在开始,记录一下学习过程复习与回忆:1.引用与指针共同优点:只用引用与指针,在传递参数时,可以减少拷贝,减少内存消耗,提高效率指针优点:指针比引用更强大,所有引用能做的事,指针都能做,指针缺点:危险,指针可以为空,指针指向地址,同一地址可以......
  • C++(静态成员函数、静态成员变量)
    目录静态成员函数(StaticMemberFunctions)静态成员变量(StaticMemberVariables)在C++中,静态成员函数和静态成员变量是与类相关联而不是与类的实例相关联的。它们属于类而不是类的实例,并且可以通过类名访问,而不需要创建类的实例。静态成员函数(StaticMemberFunctions)静态成员......
  • c++程序加速方法
    1.将反复使用的数据存放在全局变量里面。需要重复使用的数据,比如加载的图片,CSV文件等数据,存放在全局变量里面,每次加载DLL时,只加载一次,直到卸载DLL,这些数据一直保持在内存中,避免重复加载,经过测试,这样处理之后,漏装检测的时间由2.5S降低到了1.5S,因为反复读取文件,图片是一个很消耗时......
  • C++ 重载bool类型
    在C++中,可以通过重载operatorbool()来实现对自定义类型的bool类型重载。这样,您可以定义自定义类型的对象在条件语句中的行为,使其能够像内置类型一样进行条件判断。下面是一个示例,演示了如何在C++中重载bool类型:#include<iostream>#include<string>usingnamespacestd;cl......
  • C++U3-第10课-排序进阶(归并、快排)
    归并排序是一种经典的排序算法,适用于各种不同场景和数据类型的排序需求。它具有以下使用背景和优势:通用性:归并排序适用于各种不同类型的数据结构和数据类型,包括数组、链表、字符串等。它可以对任意长度的序列进行排序。稳定性:归并排序是一种稳定的排序算法,即在排序过程中相......
  • C++---打开txt文件进行字符串的查找替换最终生成Excel文件
    #include<iostream>#include<fstream>#include<sstream>#include<string>#include<vector>#include<algorithm>#include<iomanip>usingnamespacestd;voidfindAndReplaceAll(string&source,conststring&......