时间限制: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 ;
}

COGS 36. 求和问题的更多相关文章

  1. SHELL AWK 循环求和

    1.简单求和,文件如下: [linux@test /tmp]$ cat test 123.52 125.54 126.36 求和: [linux@test /tmp]$ awk '{sum += $1 ...

  2. [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组

    1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...

  3. COGS.1272.[AHOI2009]行星序列(线段树 区间加、乘、求和)

    题目链接 //注意取模! #include<cstdio> #include<cctype> using namespace std; const int N=1e5+5; i ...

  4. COGS.1317.数列操作c(分块 区间加 区间求和)

    题目链接 #include<cmath> #include<cstdio> #include<cctype> #include<algorithm> u ...

  5. COGS.264.数列操作(分块 单点加 区间求和)

    题目链接 #include<cmath> #include<cstdio> #include<cctype> #include<algorithm> u ...

  6. LCA cogs 2450 2048 1588

    t1 2450距离 链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=vSNNNVqga [题目描述] 在一个村子里有N个房子,一些双向的路连接 ...

  7. 【Excel】Excel根据单元格背景色求和

    例:用公式计算单元格背景色为浅蓝色的数字之和    步骤一: Office 2003 Insert->Name->Define,Names in workbook输入getColor或ge ...

  8. POJ 3468 A Simple Problem with Integers (伸展树区间更新求和操作 , 模板)

    伸展数最基本操作的模板,区间求和,区间更新.为了方便理解,特定附上一自己搞的搓图 这是样例中的数据输入后建成的树,其中的1,2是加入的边界顶点,数字代表节点编号,我们如果要对一段区间[l, r]进行操 ...

  9. HDOJ(HDU) 2162 Add ‘em(求和)

    Problem Description Write a program to determine the summation of several sets of integers. Input Th ...

随机推荐

  1. Identity Server 4 原理和实战(完结)_Resource Owner Password Credentials 授权实例

    今天要讲的 用fiddler来监听,昨天的客户端的请求 这是一个post的请求 这是响应的数据 Expores_in超时时间, 今天的内容 在服务端再声明一个client端 wpf的应用的效果图 首先 ...

  2. sql #与$的区别

    #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by “111”, 如果传入的值是i ...

  3. 《Android学习笔记》Android Studio如何去除顶部标题栏教程

    序] 在初步开发Android应用中,我们会遇到一个问题,顶部标题栏的名字是项目名字(app名字)并且不可编辑.非常的不方便,那么我们有什么办法把他去掉呢? [相关文章] [开发工具] Android ...

  4. phpStrom/webstrom如何修改Terminal命令行的字体大小

    phpstrom.webstrom中有个Terminal窗口效果就是打开cmd.exe,利用它就不用打开本地cmd命令行了. 默认的Terminal字体很大,如何修改呢? 1.Color Scheme ...

  5. unity sprite怎么获取切割后的图

    学习了一段时间的unity,对里面的组件有一个大致的了解,但是具体操作来说还不是很熟悉,今天看了一片关于unity sprite怎么获取切割后的图的文章,感觉还不错. 假设有一张png/tga图集,导 ...

  6. 洛谷P2568 GCD(莫比乌斯反演)

    传送门 这题和p2257一样……不过是n和m相同而已…… 所以虽然正解是欧拉函数然而直接改改就行了所以懒得再码一遍了2333 不过这题卡空间,记得mu开short,vis开bool //minamot ...

  7. 33、JSONP跨域

    跨域请求数据也是可以的,只不过Ajax这技术不行,而JSONP这种数据格式可以进行跨域.很多年前,浏览器是没有跨域限制的,可以正常跨域,浏览器为了安全和隐私限制了Ajax跨域 JSONP原理就是:将函 ...

  8. 5本自然语言处理书单-附pdf

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 自然语言处理(英语:Natural Language Processing,缩写作 NLP)是人工智能 ...

  9. 牛客寒假6-B.煤气灶

    链接:https://ac.nowcoder.com/acm/contest/332/B 题意: 小j开始打工,准备赚钱买煤气灶. 第一天,小j的工资为n元,之后每天他的工资都比前一天多d元. 已知煤 ...

  10. Shortest Path Codeforces - 59E || 洛谷P1811 最短路_NOI导刊2011提高(01)

    https://codeforces.com/contest/59/problem/E 原来以为不会..看了题解发现貌似自己其实是会的? 就是拆点最短路..拆成n^2个点,每个点用(i,j)表示,表示 ...