[AcWing 797] 差分】的更多相关文章

点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int a[N], b[N]; void insert(int l, int r, int c) { b[l] += c; b[r + 1] -= c; } int main() { int n, m; scanf("%d %d", &n, &m); for (int i = 1; i <= n; i ++) s…
点击查看代码 #include<iostream> using namespace std; const int N = 1e3 + 10; int a[N][N], b[N][N]; void insert(int x1, int y1, int x2, int y2, int c) { b[x1][y1] += c; b[x1][y2 + 1] -= c; b[x2 + 1][y1] -= c; b[x2 + 1][y2 + 1] += c; } int main() { int n, m…
一维前缀和 Acwing795.前缀和 #include <iostream> using namespace std; const int N = 100010; int n, m; int a[N], s[N]; int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]); for (int i = 1; i…
前缀和以及二维前缀和在这里就不写了. 差分:是前缀和的逆运算 ACWING二维差分矩阵    每一个二维数组上的元素都可以用(x,y)表示,对于某一元素(x0,y0),其前缀和就是以该点作为右下角以整个数组的起始点作为左上角的矩形区域内所有元素的和.[如下图的红色区域,其中六个元素的和就是(x0,y0)的前缀和] #include<cstring> #include<iostream> using namespace std; ; int n,m,q; int a[maxn][ma…
(题面来自AcWing) 给定一个长度为 n 的数列 a1,a2,-,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种. 输入格式 第一行输入正整数n. 接下来n行,每行输入一个整数,第i+1行的整数代表ai. 输出格式 第一行输出最少操作次数. 第二行输出最终能得到多少种结果. 数据范围 0<n≤105,0≤ai<2147483648(因为不开long l…
不得不说之前的差分我真的是掌握的不好.. 一维差分确实简单一看就会,但是学会了之后却并不能灵活的运用. 而二维的差分我甚至还琢磨了很长时间 懒得画图所以没有图..对于二维差分的定义,百度百科是这么说的 顾名思义,就是在矩阵中,一行(一列)的元素与上一行(上一列)对应元素的差值,依次排列在上一行(上一列)元素对应所在位置. (好像说的是矩阵差分,但是问题不大) 但是只要你用模板代码打出一个差分数组就会发现这个数组的排列并不规律,换句话说我并没有看懂这个.. 因此我们完全可以忽略差分数组一个点的意义…
有 NN 头牛站成一行,被编队为1.2.3…N,每头牛的身高都为整数. 当且仅当两头牛中间的牛身高都比它们矮时,两头牛方可看到对方. 现在,我们只知道其中最高的牛是第 PP 头,它的身高是 HH ,剩余牛的身高未知. 但是,我们还知道这群牛之中存在着 MM 对关系,每对关系都指明了某两头牛 AA 和 BB 可以相互看见. 求每头牛的身高的最大可能值是多少. 输入格式 第一行输入整数N,P,H,MN,P,H,M,数据用空格隔开. 接下来M行,每行输出两个整数 AA 和 BB ,代表牛 AA 和牛 …
一维 #include<bits/stdc++.h> using namespace std ; ; int n,m; int a[N],b[N]; //a为前缀和,b为差分 差分和前缀和互为逆运算 void insert(int l,int r,int c) { b[l]+=c; b[r+]-=c; } int main() { cin>>n>>m; ; i<=n; i++) cin>>a[i]; ; i<=n; i++) insert(i,i…
原题 题目描述给定一个长度为 n 的数列 a1,a2,…,ana1,a2,…,an,每次可以选择一个区间 [l,r][l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种. 输入格式第一行输入正整数n. 接下来n行,每行输入一个整数,第i+1行的整数代表ai. 输出格式第一行输出最少操作次数. 第二行输出最终能得到多少种结果. 数据范围0<n≤1050<n≤1050≤ai<214748…
链接: https://www.acwing.com/problem/content/103/ 题意: 有 N 头牛站成一行,被编队为1.2.3-N,每头牛的身高都为整数. 当且仅当两头牛中间的牛身高都比它们矮时,两头牛方可看到对方. 现在,我们只知道其中最高的牛是第 P 头,它的身高是 H ,剩余牛的身高未知. 但是,我们还知道这群牛之中存在着 M 对关系,每对关系都指明了某两头牛 A 和 B 可以相互看见. 求每头牛的身高的最大可能值是多少. 思路: 维护差分数组,对于a,b,Sub[a+1…