求区间和问题(水题)
来源:互联网 发布:淘宝开店的费用明细 编辑:程序博客网 时间:2024/05/22 08:25
题目意思很明确,求某段区间和。
数据结构选择:数组
方法思路:
1、最直接的方法就是对于每次询问的区间[a,b],从s[a-1]叠加到s[b-1]。但是考虑到这种方法,对于每次询问都要重新叠加。时间复杂度为O(n*n),超时。
2、考虑到每次都要重新叠加。可以选择用数组sum的第K项来储存前K项和。对于区间[a,b]的和,就是sum[b]-sum[a-1]。复杂度降为O(n)。可行。
代码:
#include <iostream> #include <string.h> #include <stdio.h> #define eps 1e-8 using namespace std; int a[100010]; int b[100010]; int main(){ int n,m,i,j; scanf("%d%d",&n,&m); int le,ri; memset(a,0,sizeof(a)); //初始化数组a. memset(b,0,sizeof(b)); //初始化数组b. for(i=1;i<=n;i++) { scanf("%d",&a[i]); b[i]=b[i-1]+a[i]; } for(i=1;i<=m;i++){ scanf("%d%d",&le,&ri); printf("%d\n",b[ri]-b[le-1]); } return 0; }
0 0
- 求区间和问题(水题)
- 最小和 --- 求一类数字区间问题
- 求区间内和问题(线段树)(hdu 1166)
- RMQ之ST算法(求区间最值问题)
- hdu5288 区间求个数和
- 求数组的区间和
- 树状数组求区间和
- 树状数组求区间和
- 区间元素可变(添加与删除)的第求k大数和给定数的排名问题
- 区间合并 区间更新 求第一个条件的子段首下标(住宿问题)
- codeforce Maximum of Maximums of Minimums(区间划分 求区间最小值最大值问题)
- 线段树求区间的和(指针)
- 线段树求区间最大值和最小值(指针)
- hdu1003 Max Sum (求连续子区间最大和)
- zzulioj 1827: 石锅全拌 (线段树求区间和)
- hdu1540(线段树求连续区间最大和)
- 求区间最大子段和(线段树)
- 1166 敌兵布阵(线段树求区间和)
- 循环的角度求均值
- getClass(),class属性和getName()解析
- ASCII详解
- 在windows xp下安装ubuntu-14.04.1-server(无U盘、光盘)
- OpenCV基础篇之使用CMake管理工程
- 求区间和问题(水题)
- Android Popup Menu的使用方法
- Java的前台线程与守护线程(后台线程)
- OpenCV基础篇之查找表
- Symfony2 教程 第一天
- 重叠I/O
- 设计模式之代理模式
- hdu5015 233 Matrix 矩阵快速幂 矩阵构造方法
- CentOS上编译安装OpenCV-2.3.1与ffmpeg-2.1.2