首页 > 其他分享 >B3612 【深进1.例1】求区间和

B3612 【深进1.例1】求区间和

时间:2023-02-25 12:56:11浏览次数:39  
标签:10 le 正整数 int B3612 深进 样例 long 区间

【深进1.例1】求区间和

题目描述

给定 $n$ 个正整数组成的数列 $a_1, a_2, \cdots, a_n$ 和 $m$ 个区间 $[l_i,r_i]$,分别求这 $m$ 个区间的区间和。

输入格式

共 $n+m+2$ 行。

第一行,为一个正整数 $n$ 。

第二行,为 $n$ 个正整数 $a_1,a_2, \cdots ,a_n$

第三行,为一个正整数 $m$ 。

第 $4$ 到第 $n+m+2$ 行,每行为两个正整数 $l_i,r_i$ ,满足 $1\le l_i\le r_i\le n$

输出格式

共 $m$ 行。

第 $i$ 行为第 $i$ 组答案的询问。

样例 #1

样例输入 #1

4
4 3 2 1
2
1 4
2 3

样例输出 #1

10
5

提示

样例解释:第 1 到第 4 个数加起来和为 10。第 2 个数到第 3 个数加起来和为 5。

对于 50% 的数据:$n,m\le 1000$ ;

对于 100% 的数据:$1 \leq n,m\le 10^5$,$1 \leq a_i\le 10^4$。


对于 50% 的数据,双重循环暴力枚举。

#include<bits/stdc++.h>
using namespace std;
int m,n;
int a[100010];
int l,r;
long long ans;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	cin>>m;
	for(int i=1;i<=m;i++){
		l=0;
		r=0;
		ans=0;
		cin>>l>>r;
		for(int j=l;j<=r;j++)
			ans+=a[j];
		cout<<ans<<endl;
	}
	return 0; 
} 

对于100%的数据:使用前缀和求解

#include<bits/stdc++.h>
using namespace std;
int m,n;
int a[100010],s[100010];
int l,r;
long long ans;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		s[i]=s[i-1]+a[i];
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		ans=0;
		cin>>l>>r;
		ans=s[r]-s[l-1];
		cout<<ans<<endl;
	}
	return 0; 
} 

标签:10,le,正整数,int,B3612,深进,样例,long,区间
From: https://www.cnblogs.com/tflsghh/p/17134658.html

相关文章

  • java8新特性使用 如stream流;时间区间和模糊查询;数据源yml
    java8新特性使用如stream流,Javastream()用法集合单独取出对象中一个属性成为集合或数组java8streamuserList=userList.stream().sorted(Comparator.comparing(UserDTO:......
  • 刷刷刷 Day 36 | 435. 无重叠区间
    435.无重叠区间LeetCode题目要求给定一个区间的集合 intervals ,其中intervals[i]=[starti,endi] 。返回需要移除区间的最小数量,使剩余区间互不重叠 。示例输......
  • LeetCode56. 合并区间(/)
    原题解题目约束题解classSolution{public:vector<vector<int>>merge(vector<vector<int>>&intervals){if(intervals.size()==0){......
  • 斑点工具如何进行灰度值阈值区间选择
    在斑点工具里面,有软阈值,硬阈值,动态阈值等。如果我想获得两个硬阈值的区间,怎么操作呢?两个斑点工具,一个黑底白点,一个白底黑点。去抓上下区间。最后通过图像相减,使用绝对值减......
  • 1230. K倍区间
    https://www.acwing.com/problem/content/1232一眼前缀和,但是似乎只能优化到O(N^2),1e5的数据会超时,如果在比赛中到是可以抢一些分枚举左端点和右端点找出所有的i,j组合......
  • leetcode 56. 合并区间
    区间左端点进行排序如果intervals小于等于一个元素直接返回如果大于1个按照左边点进行排序从左至右依次合并classSolution{public:staticboolcmp(vector<int>&a,vec......
  • AcWing 1230. K倍区间
    AcWing1230.K倍区间原题链接视频讲解思路求区间的和为k的倍数的区间的个数。首先前缀和数组处理出来。数据范围1e5,要想想O(n)或者O(logn)做法将前缀和数组\(s[n]\)......
  • hihoCoder 1078 : 线段树的区间修改
    #1078:线段树的区间修改10000ms1000ms256MB描述对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题改了改,又出给了小Ho:假设货架上......
  • 代码随想录算法训练营第三十五天 | 435. 无重叠区间,763.划分字母区间,56. 合并区间
    一、参考资料无重叠区间https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.html划分字母区间https://programmercarl.com/0763.%E......
  • 区间和线段树的各种操作
    这篇文章我们来讲一下线段树线段树,适用于对一个数列区间进行操作,可以求这段数列\(i\)到\(j\)的和、乘积、最大值、最小值等等等等,因此线段树有十分多的变种问题提出如......