2 条题解
-
3
#include <bits/stdc++.h> using namespace std; #define ll long long ll n,m,a[100001],l,r,q,b[100001]; int main(){ ios::sync_with_stdio(0); cin>>n>>m; for(ll i=1;i<=n;i++){ cin>>a[i]; b[i]=a[i]-a[i-1]; } for(ll i=1;i<=m;i++){ cin>>l>>r>>q; b[l]+=q; b[r+1]-=q; } for(ll i=1;i<=n;i++){ a[i]=a[i-1]+b[i]; cout<<a[i]<<" "; } return 0; }
-
-3
本题是一题较简单的基础差分模板题。 不会的人可以看看这个直播:https://www.bilibili.com/video/BV1MN4y1j7dR?spm_id_from=333.999.0.0&vd_source=3136e9894179057b25e6f1820e1738da
具体代码如下:
#include <bits/stdc++.h> using namespace std; int n, k, l, r, p, water[100005], diff[100005]; int main() { cin >> n >> k; for (int i = 1; i <= n; i++) { // 差分算法:输入 cin >> water[i]; diff[i] = water[i] - water[i - 1]; } for (int i = 1; i <= k; i++) { cin >> l >> r >> p; // 差分算法:降低时间复杂度 diff[l] += p; diff[r + 1] -= p; } for (int i = 1; i <= n; i++) { diff[i] += diff[i - 1]; } for (int i = 1; i <= n; i++) { // 输出 cout << diff[i] << " "; } return 0; }
- 1
信息
- ID
- 1058
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 106
- 已通过
- 62
- 上传者