差分数组
文章平均质量分 90
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
C. OLED(二维差分)
C. OLED(二维差分)思路:统计每个发光像素在屏幕上的贡献,可以观察可得这个贡献是一个区间的形式,所以考虑用二维差分代表区间加,然后求前缀和即可得每个点出现的次数。传送门#include<bits/stdc++.h>using namespace std;const int N=4e3+5;int dif[N][N],n,m,a,b;int main(){ scanf("%d%d%d%d",&n,&m,&a,&b); for(int i=1;原创 2020-07-18 10:29:47 · 1166 阅读 · 0 评论 -
#145. DFS 序 2
#145. DFS 序 2dfsdfsdfs序转树状数组,然后实现树状数组的区间修改,区间查询,这里我们用差分实现即可。具体维护证明见之前的博客。传送门#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e6+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;#define mst(a) memset(a,0,sizeof a)#define lx x<原创 2020-07-17 17:01:39 · 688 阅读 · 0 评论 -
公因子(gcd性质)
公因子(gcd性质)传送门思路:gcdgcdgcd性质:gcd(a,b)=gcd(a,b−a)gcd(a,b)=gcd(a,b-a)gcd(a,b)=gcd(a,b−a)推广:gcd(a1,a2,…,an)=gcd(a1,a2−a1,…,an−an−1)gcd(a_1,a_2,\dots,a_n)=gcd(a_1,a_2-a_1,\dots,a_n-a_{n-1})gcd(a1,a2,…,an)=gcd(a1,a2−a1,…,an−an−1)所以此题的gcd(a2−a1,…,an−原创 2020-06-27 11:15:49 · 1734 阅读 · 0 评论 -
减成一(差分数组)
减成一(差分数组)传送门思路:差分数组,目标差分数组为d[1]=1,d[2]=d[3]⋯=d[n]=0d[1]=1,d[2]=d[3]\dots=d[n]=0d[1]=1,d[2]=d[3]⋯=d[n]=0。能进行区间减操作,且保证开始数ai≥1a_i\geq1ai≥1.说明差分数组之和为正,这说明差分为正的和大于差分为负的绝对值。即取正数的差分和+d[1]d[1]d[1]与1的差值即可。#include<bits/stdc++.h>using namespace std;typ原创 2020-05-31 17:21:17 · 479 阅读 · 0 评论 -
小阳的贝壳(线段树&差分数组)
小阳的贝壳(线段树&差分数组)传送门思路:利用线段树和差分数组维护,对于区间修改,用差分数组即可实现,然后对于求区间内差分数组的最大值,用一个mxmxmx维护即可,然后对于询问区间的最大公因数,利用辗转相除法的结论:gcd(a,b)=gcd(a,b−a)gcd(a,b)=gcd(a,b-a)gcd(a,b)=gcd(a,b−a)gcd(al,al+1,al+2…ar)=gcd(al,gcd(al,al+1),gcd(al+1,al+2)…,gcd(ar−1,ar))=gcd(al,al+1−a原创 2020-05-27 16:47:31 · 408 阅读 · 0 评论 -
港口(差分数组)
港口(差分数组)传送门思路:因为是区间加减,所以考虑差分数组,题意变为:要求差分数组d[2],d[3]…d[n]d[2],d[3]\dots d[n]d[2],d[3]…d[n]全为0.每次区间加或减会使差分数组一个加1,一个减1,因为要用最小次数,所以每次操作最好产生有效贡献,可知当为正数或负数的差分数组变为0后,剩下我们可以用区间[1,r][1,r][1,r]加减1实现对一个差分数组加减1.因此根据贪心得到 :ans=max(∑d[i]正,∑d[i]负)ans=max(\sum d[i]_{正},原创 2020-05-26 08:29:40 · 346 阅读 · 0 评论 -
P1083 借教室(差分前缀和&二分)
P1083 借教室(差分前缀和&二分)传送门思路:差分前缀和+二分。对于区间的加减可以用通过差分数组实现,因为要求最小不满足条件的编号,因为此情况具有单调性,所以可以二分答案。时间复杂度:O(nlogn)O(nlogn)O(nlogn)AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e6+5;struct p{ int d,l,r;}a[N];int原创 2020-05-15 18:21:36 · 321 阅读 · 0 评论 -
D. Constant Palindrome Sum (暴力&差分数组)
D. Constant Palindrome Sum (暴力&差分数组)题目传送门思路:用差分数组记录[2,2k]范围内该数需要修改的次数.最后取最小值即可。AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;#define mst(a) m...原创 2020-04-22 09:32:11 · 403 阅读 · 0 评论 -
D.牛妹吃豆子(二维前缀和&差分数组)
D.牛妹吃豆子(二维前缀和&差分数组)题目传送门给定矩阵:k个区间修改,给q个询问区间和。思路:二维差分数组板子题。AC代码:#include<bits/stdc++.h>using namespace std;const int N=2e3+5;typedef long long ll;ll a[N][N];int main(){ int n,m,...原创 2020-04-20 14:58:28 · 389 阅读 · 0 评论 -
差分数组&前缀和公式(一维,二维)
差分数组&前缀和公式(一维,二维)(所有公式本文不作证明,读者自行查阅相关证明.)原创 2020-04-20 14:38:04 · 525 阅读 · 1 评论