yuri01 题解分享 · 2025/1/22
一维差分 - 题解
```cpp // https://dashoj.com/d/lqbproblem/p/193 #include <bits/stdc++.h> #define N 100010 using namespace std; typedef long long ll; ll n, m; vector<ll> vl(N, 0); vector<ll> cf(N, 0); int main() { cin >> n >> m; for (int i = 1; i <= n; i++) cin >> vl[i]; for (int i = 1; i <= n; i++) cf[i] = vl[i] - vl[i - 1]; while (m--) { ll l, r, c; cin >> l >> r >> c; cf[l] += c; cf[r + 1] -= c; } for (int i = 1; i <= n; i++) vl[i] = cf[i] + vl[i - 1]; for (int i = 1; i <= n; i++) cout << vl[i] << ' '; cout << endl; return 0; } ```
查看全文
1 0 1 2
Well 题解分享 · 2024/5/25
一维差分 - 题解
``` n, m = map(int, input().split()) arr = [0] + list(map(int, input().split())) diff = [0] * (n + 2) for i in range(1, n + 1): diff[i] = arr[i] - arr[i - 1] for _ in range(m): l, r, c = map(int, input().split()) diff[l] += c diff[r + 1] -= c for i in range(1, n + 1): diff[i] += diff[i - 1] print(*diff[1: -1]) ```
查看全文
1 0 0 5
NIDADIE 题解分享 · 2024/4/10
一维差分 - 题解
``` #include using namespace std; #define int long long #define endl '\n' int n,m; const int N = 1e5 + 10; int a[N],d[N]; int sum[N]; void solve(){ cin >> n >> m; for(int i = 1;i <= n;i++){ cin >> a[i]; } while(m--){ int l,r,c; cin >> l >> r >> c; d[l] += c;d[r+1] -= c; } for(int i = 1;i <= n;i++){ sum[i] = sum[i-1] + d[i]; } for(int i = 1;i <= n;i++){ a[i] += sum[i]; cout << a[i] << " "; } } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); return 0; } ```
查看全文
0 0 0 6