• 注册
当前位置:1313e > 默认分类 >正文

【HBU OJ】吃胖了的阿生

Description

阿生的朋友都知道阿生是个吃货,由此而来带来的问题是阿生每天都在长胖,虽然他丝毫都不在意。现在阿生想知道任意两天之间,他一共吃胖了多少斤,请你帮一下他吧

Input

输入第一行是两个整数n,m,表示有n天和m组测试数据

第二行是n个数,表示第i天阿生胖了多少

随后m行,每行输入两个数a,b,代表第a天和第b天

1 <= n, m<= 10^5,

1 <= a, b<= 1000,

Output

对于给定的a和b,请你计算a到b之间阿生一共胖了多少(包括a和b两个端点)

Sample Input 1

5 3
1 2 3 4 5
1 2
2 3
3 4

Sample Output 1

3
5
7

思路:

vector v1用来存放每天增长的斤数,对于本题1 2 3 4 5
提前存好一个vector v2,存放从第一天到当前天长胖的斤数。对于本题来说是1 3 6 10 15

比如 查看第三天到第五天长胖的斤数就是:
v2[存放第五天以及之前长胖斤数的下标]-v2[存放第三天以及之前长胖斤数的下标]+v2[第三天的对应下标]

C++ AC

#include 
#include 
using namespace std;int main()
{vector<int> v1,v2;int n,m,tmp,j=0;cin>>n>>m;cin>>tmp;v1.push_back(tmp);v2.push_back(tmp);for(int i=1;i<n;i++){cin>>tmp;v1.push_back(tmp);v2.push_back(tmp+v2[j]);j++;}for(int i=0;i<m;i++){int tmp1,tmp2;cin>>tmp1>>tmp2;cout<<(v2[tmp2-1]-v2[tmp1-1]+v1[tmp1-1])<<endl;}return 0;
}

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录