- [柳泉中学,龙凤苑中学,科技苑中学]拔高班第六次训练复盘
4.18
- @ 2025-4-18 18:01:12
#include <bits/stdc++.h> using namespace std; signed main(){ O(1) 常数级别 O(log n) 对数级别 O(n)、O(n^2) 多项式级别 O(2^n) 指数级别 O(n!) 阶乘级别 n!=123*...*(n-1)*n
n,m<=10^5
给定一个长度为n的数组a
问题1 查询m次 求区间[l,r]的值
问题2 修改m次 一段区间[l,r]统一加k
b[i]代表1到i所有的a求和
l,r b[r]-b[l-1]
ci 代表a[i]-a[i-1]
c[l]+=k c[r+1]-=k;
a 1 2 3 4
c 1 1 1 1
1 3 1 -1
1 4 5 4
return 0;
}
//问题2 修改m次 一段区间[l,r]统一加k #include <bits/stdc++.h> using namespace std; int const N=1e5+10; int n,m,k,l,r,a[N],c[N]; int main(){ cin>>n>>m; for (int i=1;i<=n;i++) cin>>a[i]; for (int i=1;i<=n;i++) c[i]=a[i]-a[i-1]; while (m--){ cin>>l>>r>>k; c[l]+=k; c[r+1]-=k; } for (int i=1;i<=n;i++) a[i]=a[i-1]+c[i]; for (int i=1;i<=n;i++) cout<<a[i]<<" "; return 0; }
0 comments
No comments so far...