时间限制:1.2 s   内存限制:128 MB

【问题描述
    在一个长度为n的整数数列中取出连续的若干个数,并求它们的和。
【输入格式】
    输入由若干行组成,第一行有一个整数n
    第二行有n个整数
    第三行有一个整数m
    下面m行,每行两个整数i与j(i<=j),表示求和的起始和终止位置。
【输出格式】

输出有m行, 每行一个整数,表示这个数段数列的和。

【输入样例】
输入文件
8
2 3 4 7 8 9 10 234 
5
2 3
4 7
1 3
7 7 
7 8 
 
输出文件

34
9
10 
244
【数据规模】
对于40%的数据,n<=1000,m<=1000,数列中的数不超过32767,数列的和不超过10^9
对于70%的数据,n<=10000,m<=2*10^5,数列中的数不超过32767
对于100%的数据,n<=10000,m<=2*10^5,数列中的数不超过10^9
 
线段树区间求和 
#include <cstdio>

using namespace std;

typedef long long LL;
struct node
{
LL l,r,dis;
}tree[];
LL ans,u,v,m,n,i,j;
void up(LL now)
{
tree[now].dis=tree[now*].dis+tree[now*+].dis;
}
void read(LL &x)
{
x=;LL f=;
char ch=getchar();
while(ch>''||ch<''){if(ch=='-') f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+(LL)ch-;ch=getchar();}
x=x*f;
}
void build(LL l,LL r,LL now)
{
tree[now].l=l;tree[now].r=r;
if(tree[now].l==tree[now].r)
{
read(tree[now].dis);
return;
}
LL mid=(l+r)>>;
build(l,mid,now*);
build(mid+,r,now*+);
up(now);
}
void query(LL now)
{
if(tree[now].l>=u&&tree[now].r<=v)
{
ans+=tree[now].dis;
return;
}
LL m=(tree[now].l+tree[now].r)>>;
if(u<=m) query(now<<);
if(v>m) query(now<<|);
}
int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
read(n);
build(,n,);
read(m);
while(m--)
{
read(u);read(v);
ans=;query();
printf("%lld\n",ans);
}
fclose(stdin);
fclose(stdout);
return ;
}

最新文章

  1. 使用plsql创建表空间和用户
  2. (转)高性能网站架构之缓存篇—Redis集群搭建
  3. Most middleware (like favicon) is no longer bundled with Express
  4. ACM题目————zoj问题
  5. 《OD大数据实战》Hue环境搭建
  6. Servlet课程0424(三) 通过继承HttpServlet来开发Servlet
  7. 字符编码:ANSI,ASCII,GB2312,GBK,Big5,Unicode和UTF-8
  8. 1)phpmyadmin导入数据库大小限制修改
  9. [LeetCode]题解(python):143-Reorder List
  10. Android WebView中显示一张或多张图片
  11. python中namedtuple介绍
  12. 【转】IGS相关
  13. 新的一年新的变化!IT的大变天
  14. CODEFORCES 25E Test
  15. MyBatis新手教程(一)
  16. np.random.shuffle(x)的用法
  17. 乘积型Sobolev不等式
  18. python 打开文件基础 (笔记)
  19. 启动Tomcat的时候8080被占用
  20. markdown语法测试集合

热门文章

  1. .pdm文件怎么打开
  2. 使用jdk获取网页
  3. g2o待总结
  4. Flutter实战视频-移动电商-66.会员中心_编写ListTile通用方法
  5. ASP.NET Core会议管理平台实战_2、基本概念的理解
  6. Git 移除某些文件
  7. 制作Docker镜像的两种方式
  8. 在CentOS6.6上以replSet方式部署MongoDB集群
  9. Git小白到老鸟的进阶之路
  10. 使用Bootstrap实现表格列的显示与隐藏