51Nod 1081 子段求和(数组/树状数组)
来源:互联网 发布:triz 矛盾矩阵 编辑:程序博客网 时间:2024/05/17 04:11
题目链接
数组:
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cmath>#include<vector>using namespace std;long long t[50001]={0};int n;void add(int x,long long v){while(x<=n){t[x]+=v;x+=x&-x;}}long long sum(int x){long long sum=0;while(x){sum+=t[x];x-=x&-x;}return sum;}int main(){cin>>n;for(int i=1;i<=n;i++){long long num;cin>>num;t[i]=t[i-1]+num;} int m;cin>>m;for(int i=0;i<m;i++){int a,b;cin>>a>>b;cout<<t[a+b-1]-t[a-1]<<endl; }return 0;}
树状数组:
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cmath>#include<vector>using namespace std;long long t[50001]={0};int n;void add(int x,long long v){while(x<=n){t[x]+=v;x+=x&-x;}}long long sum(int x){long long sum=0;while(x){sum+=t[x];x-=x&-x;}return sum;}int main(){cin>>n;for(int i=1;i<=n;i++){long long num;cin>>num;add(i,num);} int m;cin>>m;for(int i=0;i<m;i++){int a,b;cin>>a>>b;cout<<sum(a+b-1)-sum(a-1)<<endl; }return 0;}
阅读全文
0 0
- 51Nod 1081 子段求和(数组/树状数组)
- 51nod:1081 子段求和(树状数组)
- 51nod1081 子段求和(dp、树状数组、线段树求法)
- 51nod 1081 子段求和
- 51nod-1081子段求和
- 51nod 1081 子段求和
- 51nod 1081 子段求和
- 51Nod 1081 子段求和
- 【51Nod】1081 子段求和
- 51Nod-1081-子段求和
- 51Nod-1081 子段求和
- 51nod 1081 子段求和
- 51Nod-1081 子段求和
- H 子段求和(51Nod 1081)
- 51Nod-1081-子段求和
- 51Nod-1081 子段求和【前缀和】
- 51nod-1081[前缀和]子段求和
- 【循环数组最大子段和】51nod 1050 循环数组最大子段和
- FTPrep, 51 N-Queens
- [Hexo] Hexo更换主题
- 深度学习概论:为什么深度学习会兴起?
- SHiro学习笔记
- [html] div标签
- 51Nod 1081 子段求和(数组/树状数组)
- 51Nod-2006 飞行员配对(二分图最大匹配,匈牙利算法)
- Java程序员必知的8大排序
- [html] h标签
- redhat Linux6下搭建简单的VPN服务器
- [html] img标签的alt属性
- tensoflow练习7:生成图片
- 简单练习java写类
- [html] link标签