首页 > 其他分享 >前缀和和差分

前缀和和差分

时间:2023-11-02 10:47:22浏览次数:29  
标签:y2 前缀 int d% 差分 x2 x1

一维前缀和

 1 #include<iostream>
 2 using namespace std;
 3 
 4 const int N = 100010;
 5 int n,m;
 6 int a[N],s[N]; //初始化s[0] = 0
 7 
 8 int main()
 9 {
10     scanf("%d%d", &n, &m);
11     for (int i = 1; i <= n; i ++ ) cin >> a[i];
12     
13     for (int i = 1; i <= n; i ++ ) s[i] = s[i - 1] + a[i]; //前缀和读入(公式)初始化
14     
15     while (m -- ) // m次读入
16     {
17         int l,r;
18         scanf("%d%d", &l, &r);
19         printf("%d\n",s[r] - s[l - 1]);//部分前缀和
20     }
21     return 0;
22 }

 

二维前缀和

 1 #include<iostream>
 2 using namespace std;
 3 
 4 const int N = 1010;
 5 int n,m,q;
 6 int a[N][N],s[N][N];
 7 
 8 int main()
 9 {
10     scanf("%d%d%d", &n, &m,&q);
11     for(int i = 1;i <= n; i ++)
12        for(int j = 1;j <= m; j ++)
13         scanf("%d", &a[i][j]);
14         
15     for(int i = 1; i <= n; i ++)
16        for(int j = 1; j <= m ; j ++)
17         s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + a[i][j]; //求前缀和
18     
19     while(q -- )
20     {
21         int x1,y1,x2,y2;
22         scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
23         printf("%d\n",s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1]);//算子矩阵的合
24     }
25     return 0;
26 }

 

        

 

S[i,j]S[i,j]即为图1红框中所有数的的和为:

S[i,j]=S[i,j−1]+S[i−1,j]−S[i−1,j−1]+a[i,j]S[i,j]=S[i,j−1]+S[i−1,j]−S[i−1,j−1]+a[i,j]
(x1,y1),(x2,y2)(x1,y1),(x2,y2)这一子矩阵中的所有数之和为:S[x2,y2]−S[x1−1,y2]−S[x2,y1−1]+S[x1−1,

 

标签:y2,前缀,int,d%,差分,x2,x1
From: https://www.cnblogs.com/rw666/p/17804849.html

相关文章

  • 差分思想的一些运用
    差分差分的基本模型是:若有一数组\(a[~]=\{1,1,4,5,1,4\}\),定义差分数组\(d[~],~d_i=a_i-a_{i-1}~(i\in[1,n])\).则\(d[~]=\{1,0,3,1,-4,3\}\).现在要对它进行在线区间修改,假设有一次修改为在\([2,4]\)上每一位+1,那么修改后\(a[~]=\{1,2,5,6,1,4\}\).而差......
  • 14. 最长公共前缀
    目录题目法一、翻译法二、内置函数zip+set法三、排序题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入:strs=["flower","flow","flight"]输出:"fl"示例2:输入:strs=["dog","racecar","car"]......
  • Codeforces Round 904 (Div. 2) C. Medium Design(前缀和+差分)
    CodeforcesRound904(Div.2)C.MediumDesign思路:因为出现的线段应该为不相同的线段,所以最小值应该为\(1\)或\(m\)因此我们可以通过差分储存线段范围内的加值,再用前缀和表示这个范围内的最大加值sl为不包含\(1\)的线段的差分,sr为不包含\(m\)的线段差分记录用于差分的......
  • DSPLearning_day02--卷积、互相关和差分方程求解的matlab实现
    卷积实现\[y(n)=x(n)*h(n)\\y(n)=\sum_{m=-\infin}^{\infin}x(m)h(n-m)\]%确定第一个序列的x轴和y轴坐标nx=[0:1];x=[12];%确定第二个序列的x轴和y轴坐标nh=[0:2];h=[321];%conv是matlab自带的对两个序列进行卷积的函数y=conv(x,h);%注意配好......
  • Python根据列表在指定目录寻找对应前缀的文件
    现在有一个txt列表,里面包含的是一些文件名,如a,b等等,现在需求是在一个多级文件夹下,需要寻找以a为名字的任何格式文件,如a.001,a.002等等,寻找这个txt列表里包含的文件名的对应文件,复制到指定文件夹下importosimportshutil#读取文件名列表withopen('msg.txt','r')asfile:......
  • Acwing393. 雇佣收银员 题解 差分约束
    题目链接:https://www.acwing.com/problem/content/description/395/解题思路:差分约束。为了方便起见,定义第\(i\)个时间段为\(i-1:00\)到\(i:00\)首先,为了方便开一个额外的点,令\(R_i\)对应为题目中的\(R(i+1)\),即\(R_i\)表示\(i-1:00\)到\(i:00\)这个时间段的最小需求......
  • 数据库系列:前缀索引和索引长度的取舍
    数据库系列:MySQL慢查询分析和性能优化数据库系列:MySQL索引优化总结(综合版)数据库系列:高并发下的数据字段变更数据库系列:覆盖索引和规避回表数据库系列:数据库高可用及无损扩容数据库系列:使用高区分度索引列提升性能1背景有时候我们需要在字符类型的字段上建设索引,但是如果......
  • R语言用逻辑回归预测BRFSS中风数据、方差分析anova、ROC曲线AUC、可视化探索
    行为风险因素监测系统(BRFSS)是一项年度电话调查。BRFSS旨在确定成年人口中的风险因素并报告新兴趋势。例如,调查对象被询问他们的饮食和每周体育活动、HIV/AIDS状况、可能的吸烟情况、免疫接种、健康状况、健康日数-与健康相关的生活质量、医疗保健获取、睡眠不足、高血压认知、胆固......
  • 14. 最长公共前缀
    编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入:strs=["flower","flow","flight"]输出:"fl"代码1.为空,res="",不为空,res=strs[0];2.开始遍历3.s.find(res)!=0不是其前缀,开始减去res的最后一个字符classSol......
  • Python字符串前缀u、r、b、f含义
    1、字符串前加u例子:u"字符串中有中文"含义:前缀u表示该字符串是unicode编码,Python2中用,用在含有中文字符的字符串前,防止因为编码问题,导致中文出现乱码。另外一般要在文件开关标明编码方式采用utf8。Python3中,所有字符串默认都是unicode字符串。 2、字符串前加r例子:r......