草庐IT

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

tflsghh 2023-03-28 原文

【深进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; 
} 

有关B3612 【深进1.例1】求区间和的更多相关文章

  1. java - 无法使用 Saxon 处理器应用区间算法 - 2

    我正在使用Saxon处理器来执行验证。包含所有函数定义的文件如下:default-definition.txt:declarevariable$aexternal;declarevariable$bexternal;declarevariable$cexternal;declarefunctioniaf:sum($paramsasitem()*)asitem()+{let$facts:=if(empty($params))then(0)elseone-or-more($params)let$values:=for$iin$factsreturn(iaf:splitValueThresh

  2. Python笔记-置信区间含义及运算 - 2

    基本概念这里先要知道几个概念!均值(平均值):一组数据的平均值,比如学生时代最喜欢的平均分;方差:一组数据与平均值的偏离程度;标准差(标准误差):方差开根号,反应数据的离散程度;置信区间:统计的数据误差范围,所以有个上下值,比如农产品上写的5kg±5%。置信水平:让人相信的概率,比如置信水平是95%,如100个数据,有95个数据在上面的置信区间上。计算置信区间①求均值;②求标准误差;③查表的z值,如下表:置信水平|z|值90%1.6495%1.9699%2.58④计算置信区间:a=样本均值-|z|*标准差b=样本均值+|z|*标准差Python实例如下代码:importnumpyasnpfro

  3. 区间dp(含模板及例题) - 2

    概述:区间dp:就是对于区间的一种动态规划,对于某个区间,它的合并方式可能有很多种,我们需要去枚举所有的方式,通常是去枚举区间的分割点,找到最优的方式(一般是找最少消耗)。例如:对于区间【i,j】,它的合并方式有很多种,可以是【i,i+1】和【i+2,j】也可以是【i,k】和【k+1,j】(其中i)……在合并区间时,一般会有消耗(根据题意去计算),状态转移方程就可以表示成:dp[i][j]=min(dp[i][j],dp[i,k]+dp[k+1][j]+合并区间的消耗)(k是区间分割点)for(intk=i;k模板:通常都是先枚举区间长度,区间长度为1就不用合并,所以从2开始枚举,然后枚举左端

  4. JavaScript - jQuery 区间 - 2

    我正在使用JavaScript和jQuery。我有以下脚本每30秒提醒一次hi。$(document).ready(function(){alert("hi");setInterval(function(){alert("hi");},30000);});我想在页面加载时(当文档/页面完全加载时)提醒hi,之后每隔30秒提醒一次(如hi(0s)-hi(30s)-hi(60s)..等)。但我的解决方案适用于两个实例。一个准备好DOM,另一个在循环中。有没有办法在单个实例中做同样的事情?你可以看到我的fiddlehere. 最佳答案 您

  5. 【动态规划】LeetCode 312. 戳气球 --区间DP问题 - 2

     Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。🌈个人主页:主页链接🌈算法专栏:专栏链接     我会一直往里填充内容哒!🌈LeetCode专栏:专栏链接     目前在刷初级算法的LeetBook。若每日一题当中有力所能及的题目,也会当天做完发出🌈代码仓库:Gitee链接🌈点击关注=收获更多优质内容🌈目录题目:戳气球题解:代码实现:完结撒花因为一些事,最近状态不是很好,加上今天的每日一题有点难,看的烦躁(就是菜,就来更新一下今天与每日一题相关的区间Dp问题(戳气球),这篇也是关于区间Dp的问题uu可以看看 话不多说,开始! 题

  6. php - 星级评定,实现威尔逊评分区间 - 2

    classRating{publicstaticfunctionratingAverage($positive,$total,$power='0.05'){if($total==0)return0;$z=Rating::pnormaldist(1-$power/2,0,1);$p=1.0*$positive/$total;$s=($p+$z*$z/(2*$total)-$z*sqrt(($p*(1-$p)+$z*$z/(4*$total))/$total))/(1+$z*$z/$total);return$s;}publicstaticfunctionpnormaldist($qn){

  7. 求区间交集的Java算法 - 2

    我有这样的时间间隔:[5,10]我有更多的时间点列表,长度不同,例如:t1=[3,6,9,10]t2=[2,4,5,6,10]..t1[3,6]是第一个区间,[6,9]是第二个区间,依此类推。t2和其他列表也是如此。现在我需要保存列表,以及与第一个时间间隔相交的特定间隔。例如,在t1中,我有[3,6]与[5,10]、[6,9]相交,与[5,10]等我已经制定了一个算法,但我要处理更多数据,我需要一个快速算法。例如,如果我使用300.000个列表并且每个列表都有200个时间点,我的算法1在大约5-10秒内正常。但如果我有10.000个或更多时间点,算法就会非常慢。我的算法是这样的:Fir

  8. java - 如何在 Java 中表示整数区间? - 2

    我们都知道数学中的区间(例如-4我如何在Java中表示这些数学区间,例如-4和3之间的数字(-4、-3、...、2、3等)? 最佳答案 检查apachecommons-langIntRange.所以,如果你想检查一个数字是否在给定的区间(范围)内,你可以:IntRangerange=newIntRange(-4,3);if(range.contains(x)){....} 关于java-如何在Java中表示整数区间?,我们在StackOverflow上找到一个类似的问题:

  9. 【统计理论】关于置信度、置信区间的理解 - 2

    太长不看(简要总结)置信区间是估测总体参数的真值,这个值只有一个,且不会变动。例如做100次实验,100个成绩,95次实验的成绩区间包含总体均值,那么就代表置信度为95%。随着置信度的上升,置信区间的跨度也就越大,对参数估计的精度必定降低。点估计就一个值,精度高,但置信度则低。(置信度与精度反方向变化)这段是对参考资料的总结,下面基本摘自资源。一、为什么要用区间估计?首先,置信度这个概念的引入是为了配合一个叫做区间估计的东东。估算置信区间,通常都是用点估计算出来的数据加上一个变动幅度形成一个区间。在这个变动幅度里,涉及到一个参数就是置信度。看个例子:你打枪打10次,你可以得到一个平均值,比如是

  10. c++ - 两个区间 [a,b] 之间的 double 随机数生成 - 2

    我需要生成X随机双数均匀分布在两个区间[a,b]之间,其中a和b也是双数。那些X需要在类函数内部生成数字,比如myclass::doSomething(a,b).问题是间隔[a,b]传递给了doSomething(a,b)每次doSomething(a,b)时功能都会改变函数被另一个类函数调用,比如doThat().我想要一个可以让我:1.有一个engine具有更高的范围,理想情况下,每次应用程序运行只应播种一次。2.X每次调用doSomething()时都会生成随机双数函数,应均匀分布。我下面的解决方案不允许engine的范围更大而且似乎生成的数字不一定是均匀分布的。//file:u

随机推荐