首页 > 【模板】差分
头像 Ldh1315109
发表于 2025-11-11 18:12:59
def solve(testcase): n, q = MI() A = LII() B = [0, A[0]] for i in range(1, n): B.append(A[i] - A[i - 1]) B.append(0) 展开全文
头像 realrole
发表于 2025-12-12 00:46:19
#include <iostream> #define int long long #define endl '\n' using namespace std; signed main() { int n,q; cin>>n>>q; in 展开全文
头像 金刚侠
发表于 2025-12-18 23:01:07
#include <iostream> using namespace std; #include <vector> int main() { int n,q; cin>>n>>q; vector<long long>s(n+1); 展开全文
头像 王同学8
发表于 2025-12-17 15:38:57
n,q = map(int,input().split()) a = list(map(int,input().split())) tmp = [a[0]] for i in range(1,n): tmp.append(a[i]-a[i-1]) for _ in range(q): 展开全文
头像 小狐今天睡大觉
发表于 2025-12-28 11:24:01
如果每一次操作都直接操作原数组,在极端情况下达到O(n^2)导致超时。采用差分思想进行数组操作:实现一个差分数组,该数组的元素置零,该数组用来表示多个patch区间,区间头为差分数,区间末尾为-差分数。维护cnt表示当前patch大小,最后一次性加到原数组里。 #include <iostre 展开全文
头像 SDU_25_数学交叉_新耕孙
发表于 2025-12-19 10:52:45
#include<bits/stdc++.h> using namespace std; const int MAXN = 5000005; long long a[MAXN]; long long diff[MAXN]; //构建差分数组 void build_diff(int n) 展开全文
头像 Drink0318
发表于 2025-12-23 10:42:04
import sys data=sys.stdin.read().splitlines() n,q=map(int,data[0].split()) a=list(map(int,data[1].split())) diff=[0]*(n+1) for i in range(0,n+1): 展开全文
头像 此在Dasein
发表于 2025-11-17 03:03:49
这是一个典型的差分数组(Difference Array)应用场景。核心思想是: 问题特点:只进行区间修改,且无需在中间过程查询,最终一次性输出结果。这允许我们将"区间操作"转化为"点操作"。 关键观察:如果对原数组的区间 [l, r] 增加 d,等价于在差 展开全文
头像 自由的风0450
发表于 2025-11-15 09:24:10
#include <iostream> #include<vector> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n,q 展开全文
头像 nous1
发表于 2025-11-17 12:29:59
#include <bits/stdc++.h> using namespace std; #define int long long signed main() { int n,m; cin>>n>>m; int arr[n]; vec 展开全文