前缀和差分
“前缀和差分”学习
CCCCDEV_CCCC
志在四方少年,羡慕南飞的雁
展开
-
1083 借教室
1083 借教室这道题如果暴力的话肯定会超时,只能得45分这道题的思路就是说每次这s-t天每一天都得减去借的桌子s,如果发现减去之后是一个负数说明这条订单不合理需要输出编号,那么我们暴力枚举的其实就是这个[s,t]区间,枚举的过程多大一千万,这个时间复杂度太高了,只能有45分所以我们得进行一个优化,优化在哪里?肯定就是[s,t]区间得进行一个减少时间,用什么呢?前缀和前缀和其实是一个很简单的,其实表示方法就是s[i]=a[i]+a[i-1]+a[i-2]+a[i-3]+…+1,求出来前缀和数组就好原创 2021-05-04 19:24:04 · 73 阅读 · 0 评论 -
2367 语文成绩
2367 语文成绩看见这个题目后,我吓了一跳,啊偶滴天那当然如果语文老师真的把我的分算高了,我才不会帮她(危当然这个题很明显就是用差分来做,差分的概念我们已经很清楚了,他和前缀和一样,都是一些懒人专用,hh当然这个题用线段树也可以,看到区间修改的操作不过我是来练差分的其实这道题就是一个差分的模板题,非常的模板首先我们维护一个差分数组d[i]=a[i]-a[i-1]然后我们使得xy这个d[x]加上z,d[y+1]减去z,那么这样就能满足修改的前提,然后循环利用差分更新原成绩,取最小值#inc原创 2021-08-08 19:34:38 · 85 阅读 · 0 评论 -
2671 求和
2671 求和首先需要找出满足条件的三元组,最后将三元组通过求和算出来,一般这种题,都少不了前缀和不过这个题,好像是一个方程推导题,这种题,我练的不好不过任何一个算法,都是对暴力的优化by 警察浩翔所以,如果我们一个一个枚举x,y,z时间复杂度肯定会炸对吧我们可以得到,2y=z+x由此可知z+x肯定是一个偶数,z和x必须同为偶数或者同为奇数所以只需要枚举z和x就好了,不过还会超时我们可以利用分组的思想,将每一个颜色进行分组然后按照奇偶分组,所以一共有2m组假设一个分组有k个数,这原创 2021-08-08 18:54:38 · 92 阅读 · 0 评论 -
1043 数字游戏
1043 数字游戏因为前缀和本来就是优化动态规划的方法,所以这一道题两个都得会,但是看第一眼的时候不明白和前缀和有什么关系题目比较难理解给定一个环数,要求分成k个方案,使得每个组的乘积之和最小和最大首先我来列举一下操作吧1.破环为链,这个操作非常的经典,而且在这个题很容易的看出来,给的数就是一个环,就是把数据进行两遍存储,如果想加深对破环为链的操作,必须得明白并查集的反集这一个东西,本菜鸡昨天才真正的启发式了2.前缀和,前缀和不是万能的,但是前缀和真的很方便,节省了不少时间,适用于数据直接相加的原创 2021-08-08 18:01:00 · 84 阅读 · 0 评论 -
2629 好消息,坏消息!
2629 好消息,坏消息!知道这些信息的好坏度,研究如何不让老板发怒题意很好理解,给定一个序列,使得这个序列的和不能为负数的方案,很显然,和前缀和单调队列有关系而且我发现,单调队列和前缀和经常在一起考,并且前缀和这个东西在提高组的有很大的用武之地对于这个题很显然,一个数列有很多种情况,也很显然,这个题又是一个破环为链的操作对于破环为链的操作我们已经很熟悉了,需要开两倍的空间要想让uim同学不被炒鱿鱼,我们只能让这个区间内的和为正数,熟悉前缀和的肯定会明白如何计算区间和,那么这个题其实就没有什么了原创 2021-08-08 16:46:02 · 87 阅读 · 0 评论 -
前缀区间和
前缀区间和这是前缀和的一个例题给定一个序列a,每次求出给出一个l和r,需要计算al+2al+1+3al+2+…+(r-l+1)ar例如原序列a,为等差1的数列,那么如果l=5,r=10结果=a5+2a6+3a7+4a8+…+6a10这个东西很明显可以用前缀和来做我们可以发现al+2al+1+3al+2+…+(r-l+1)ar=(lal+(l+1)al+1+…+rar) – (l-1)(al+al+1+al+2+…+ar)所以我们可以用s表示a的前缀和,s1表示i*ai的前缀和就可以快速表示原创 2021-08-06 16:56:25 · 112 阅读 · 0 评论 -
差分前缀和
前缀和差分有一列数字,多次询问一个区间的和做法其实很简单,预处理一个数组sum[i]=a[i]+a[i-1]+a[i-2]+…+a[1]所以想求一个区间只需要用b[r]-b[l]+1即可for(int i=1;i<=n;i++) { cin>>a[i]; sum[i]=a[i]+sum[i-1]; }二维前缀对于二维数组a(1,1)…a(n,m)考虑把他画到一个平面上,某一个位置的前缀和就是他左下方的所有数的和如果想求一个二维前缀的话,可以先求一个一维前缀和,再原创 2021-07-24 17:06:18 · 54 阅读 · 0 评论