3 条题解
-
1
问题描述:(
虽然中计了....)n a
$第二行输入 𝑛 n 个正整数 𝑎 𝑖 ( 1 ≤ 𝑖 ≤ 𝑛 , 1 ≤ 𝑎 𝑖 ≤ 10 4 )。$
$ 每行输入 3 3 个正整数 𝑙 , 𝑟 , 𝑑 l,r,d。
$( 1 ≤ 𝑙 ≤ 𝑟 ≤ 𝑛 , − 10 4 ≤ 𝑑 ≤ 10 4 1≤l≤r≤n,−10 4 ≤d≤10 4 )。
第一眼
暴力!!!
#include<bits/stdc++.h> using namespace std; void out(){ cout<<" "; } int main(){ int n,m; cin>>n>>m; int a[10005]; for(int i=1;i<=n;i++){ cin>>a[i]; while(m--){ int l,r,d; cin>>l>>r>>d; for(int j=l;j<=r;j++){ a[j]+=d; } } } for(int i=1;i<=n;i++){ cout<<a[i]<<" "; } return 0; out(); }
Yeah
喜提WA等一下
标签
差分....

我想

*****************************
回归正题:
差分代码
(复制的是GAY)code:
#include<bits/stdc++.h> using namespace std; void out(){ cout<<" "; } int main(){ int n,m; cin>>n>>m; vector<long long> a(n+2,0); vector<long long> d(n+2,0);//差分数组 for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=m;i++){ int l,r,dd; cin>>l>>r>>dd; d[l]+=dd; d[r+1]-=dd; } int cnt=0; for(int i=1;i<=n;i++){ cnt+=d[i]; a[i]+=cnt; cout<<a[i]<<" "; } return 0; out(); }最后,给个视频:

信息
- ID
- 22
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 入门
- 标签
- 递交数
- 419
- 已通过
- 141
- 上传者