差分数组(简单易懂)
一、什么是差分数组?
差分数组本质上来说就是一个数组,可以用O(1)的时间处理区间修改。
二、差分数组的定义式
设原数组为a数组,差分数组为d数组,则对于i∈[2,n],都有d[i]=a[i]-a[i-1].
三、差分数组的性质
1.当我们需要更新区间[l,r]时候(仅指加减运算),我们仅仅可以只更新d[l]+=x,d[r+1]-=x;
2.当我们需要单独查询原数组一个点的值的时候,我们不难发现出令为d[i]的前缀和,那么a[i]=;
3.当我们需要求原数组的前缀和的时候,我们可以设前x项和为,则有:
四、例题:
AcWing 1952. 金发姑娘和 N 头牛
AC代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
map<int,int>mapp;
int main(){int n,x,y,z;cin >> n >> x >> y >> z;int xx,yy;for (int i = 1; i <= n; i ++ ){cin >> xx >> yy;mapp[0]+=x;mapp[xx]=mapp[xx]-x+y;mapp[yy+1]=mapp[yy+1]-y+z;}int maxn=0;int sum=0;for(map<int,int>::iterator iter=mapp.begin();iter!=mapp.end();iter++){sum+=iter->second; maxn=max(maxn,sum);}cout<<maxn;return 0;
}
差分数组(简单易懂)相关推荐
- CodeForces - 1343D Constant Palindrome Sum(思维+差分数组)
题目链接:点击查看 题目大意:给出 n 个数,保证 n 是偶数,且每个数的范围都在 [ 1 , k ] 之间,现在问我们至少需要给多少个数重新赋值,使得可以满足条件: 所有的数的值域都在 [ 1 , ...
- LeetCode—笔记—51、N皇后——递归回溯,个人思路,简单易懂
LeetCode-笔记-51.N皇后--递归回溯,个人思路,简单易懂 51. N 皇后 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 ...
- 差分数组 and 树上差分
差分数组 定义 百度百科中的差分定义 //其实这完全和要讲的没关系 qwq 进去看了之后是不是觉得看不懂? 那我简单概括一下qwq 差分数组de定义:记录当前位置的数与上一位置的数的差值. 栗子 容易 ...
- python刷题总结_【python刷题】差分数组
前缀和主要适用的场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和. 差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减. class Difference: def __init ...
- 差分数组分析详解+例题
一.定义: 差分,又名差分函数或差分运算,差分的结果反映了离散量之间的一种变化. 例如,我们有一段离散化序列:a[1],a[2],a[3]......a[n-1],a[n], 我们可以建立数列的每一项 ...
- C语言/C++ 矩阵的右下半部分【简单易懂,代码可以直接运行】
C语言/C++ 矩阵的右下半部分[简单易懂,代码可以直接运行] 输入一个二维数组 M[12][12],根据输入的要求,求出二维数组的右下半部分元素的平均值或元素的和. 右下半部分是指次对角线下方的部分 ...
- python矩阵的右下半部分【简单易懂,代码可以直接运行】
python矩阵的右下半部分[简单易懂,代码可以直接运行] 输入一个二维数组 M[12][12],根据输入的要求,求出二维数组的右下半部分元素的平均值或元素的和. 右下半部分是指次对角线下方的部分,如 ...
- Python 一文学会字典数据类型【简单易懂,代码可以直接运行,强烈推荐】
Python 一文学会字典数据类型[简单易懂,代码可以直接运行,强烈推荐] ''' 字典的含义:字典存储的是生活中一个物体的信息 字典的特征: 组成它的数据:key:value组合 字典中的key不能 ...
- 并查集详解 ——图文解说,简单易懂(转)特别好玩
并查集详解 --图文解说,简单易懂(转) 2016年03月10日 17:38:08 阅读数:6931 标签: 并查集数据结构并查集算法图文解说 更多 个人分类: 算法--并查集 并查集是我暑假从高手那 ...
- LeetCode第 57 场力扣夜喵双周赛(差分数组、单调栈) and 第 251 场力扣周赛(状态压缩动规,树的序列化,树哈希,字典树)
LeetCode第 57 场力扣夜喵双周赛 离knight勋章越来越近,不过水平没有丝毫涨进 1941. 检查是否所有字符出现次数相同 题目描述 给你一个字符串 s ,如果 s 是一个 好 字符串,请 ...
最新文章
- FileNotFoundError: [Errno 2] No such file or directory: _MEI138162\\astor\\VERSION‘
- goaccess在定时任务中不执行的问题
- linux下netty接收不到服务,Netty 发送消息失败或者接收消息失败的可能原因
- html新增了哪些功能,HTML5相比HTML新增了哪些功能?
- 使用c:foreach时链接失效
- .Net Core Razor 预编译,动态编译,混合编译
- webpack4打包工具
- as模拟器文件夹路径_EGG Switch手机模拟器怎么用?中文教程来了......
- Java基础之扩展GUI——高亮元素、上下文菜单、移动旋转元素、自定义颜色(Sketcher 10)...
- 500块钱买一个手机壳,为什么年轻人如此上头?
- 斗拱展开面积表_144996_河南省仿古建筑工程计价综合单价2009
- 解析json数组——TypeToken
- 构建azure对话机器人_如何在5分钟内使用Azure创建聊天机器人
- c#语法复习总结(1)-浅谈c#.net
- 设计模式----原型模式(C++实现)
- 基于算符优先文法的逆波兰表达式及计算
- 一款秒杀wireshark和burpsuite的国产网络分析神器,你还没用过?
- 记录一下把域名从阿里云服务商转入到华为云
- mysql比对两张表数据
- .bat文件打开闪退