一、差分法
1、肖恩的投球游戏
#include <bits/stdc++.h>
using namespace std;
#define N 100000
int a[N],diff[N];
int n,p;
int l,r,c;
void solve(int l,int r,int c)
{
diff[l]+=c;
diff[r+1]-=c;
}
int main()
{
ios_base :: sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin>>n>>p;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
diff[i]=a[i]-a[i-1];
for(int i=1;i<=p;i++)
{
cin>>l>>r>>c;
solve(l,r,c);
}
for(int i=1;i<=n;i++)
a[i]=a[i-1]+diff[i];
for(int i=1;i<=n;i++)
cout<<a[i]<<' ';
return 0;
}
解决问题的思路并不复杂,是简单的差分求解问题