B3612 【深进1.例1】求区间和https://www.luogu.com.cn/problem/B3612#includebits/stdc.h using namespace std; typedef long long LL; const int N100005; LL s[N],a[N]; void solve(){ int n,m; cinn; for(int i1;in;i){ cina[i]; s[i]s[i-1]a[i]; } cinm; while(m--){ int l,r; cinlr; couts[r]-s[l-1]endl; } } int main(){ ios::sync_with_stdio(0); cin.tie(0); solve(); return 0; }U549625 小苯的区间和疑惑https://www.luogu.com.cn/problem/U549625区间和最大也就是s[r]-s[l-1]尽量大即s[r]尽量大s[l-1]尽量小即s[i]、s[i1]、s[i2]、、、最大值——前缀和的后缀最大值suf[i]表示s的后缀max同理前缀和的前缀最小值pre[i]表示s前缀min#includebits/stdc.h using namespace std; typedef long long LL; const int N200005; LL a[N],s[N],pre[N],suf[N]; void solve(){ int n; cinn; for(int i1;in;i){ cina[i]; s[i]s[i-1]a[i]; } for(int i1;in;i){ pre[i]min(pre[i-1],s[i]); } suf[n1]-1e18; for(int in;i0;i--){ suf[i]max(suf[i1],s[i]); } pre[0]0; for(int i1;in;i){ coutsuf[i]-pre[i-1] ; } } int main(){ ios::sync_with_stdio(0); cin.tie(0); solve(); return 0; }
朴素前缀和,朴素枚举
B3612 【深进1.例1】求区间和https://www.luogu.com.cn/problem/B3612#includebits/stdc.h using namespace std; typedef long long LL; const int N100005; LL s[N],a[N]; void solve(){ int n,m; cinn; for(int i1;in;i){ cina[i]; s[i]s[i-1]a[i]; } cinm; while(m--){ int l,r; cinlr; couts[r]-s[l-1]endl; } } int main(){ ios::sync_with_stdio(0); cin.tie(0); solve(); return 0; }U549625 小苯的区间和疑惑https://www.luogu.com.cn/problem/U549625区间和最大也就是s[r]-s[l-1]尽量大即s[r]尽量大s[l-1]尽量小即s[i]、s[i1]、s[i2]、、、最大值——前缀和的后缀最大值suf[i]表示s的后缀max同理前缀和的前缀最小值pre[i]表示s前缀min#includebits/stdc.h using namespace std; typedef long long LL; const int N200005; LL a[N],s[N],pre[N],suf[N]; void solve(){ int n; cinn; for(int i1;in;i){ cina[i]; s[i]s[i-1]a[i]; } for(int i1;in;i){ pre[i]min(pre[i-1],s[i]); } suf[n1]-1e18; for(int in;i0;i--){ suf[i]max(suf[i1],s[i]); } pre[0]0; for(int i1;in;i){ coutsuf[i]-pre[i-1] ; } } int main(){ ios::sync_with_stdio(0); cin.tie(0); solve(); return 0; }