当前位置: 首页 > wzjs >正文

怎么查一个网站有没有做301东莞市优速网络科技有限公司

怎么查一个网站有没有做301,东莞市优速网络科技有限公司,武汉做网站 古凡,网站banner的设计要素前缀和,就是通过一种方法来求出数组中某个连续区间的元素的和的办法。我们通常先预处理出来一个前缀和数组,然后把数组中进行元素填充后再进行后续使用。 我们通过一道模板题或许能更加理解其意思。 现在的问题就是:如果我们用暴力枚举来记录…

前缀和,就是通过一种方法来求出数组中某个连续区间的元素的和的办法。我们通常先预处理出来一个前缀和数组,然后把数组中进行元素填充后再进行后续使用。

我们通过一道模板题或许能更加理解其意思。 

现在的问题就是:如果我们用暴力枚举来记录每次l与r之间的和,那么肯定是会超时的(时间复杂度O(N*q)),我们要另辟蹊径。我们用一下上面的前缀和算法。

假设我们原有的数组为arr,现在我们要另创建一个数组dp。这个dp数组的每一个元素dp[i]记录着arr[i]及之前的元素之和。

注意,我们这里的arr和dp中的i都是以1开始记录而不是0,稍后我们解释一下原因,我们先把arr[0]和dp[0]都看成0。dp中的元素计算公式为:
dp[i]=dp[i-1]+arr[i];

利用这个公式,我们也可以把dp数组进行初始化。接下来就是如何使用,

假设我们要求l-r的和,只需要用dp[r]-dp[l-1]即可。

通过这个公式我们就可以说明为什么下标需要从1开始了,如果l为0,也就是想求从最左到r,那么公式里就是dp[r]-dp[-1]。越界是万万不可的。所以我们要把arr和dp的0位置空出来并标记为0即可(0并不影响求和)。这种方法我们就成功把时间复杂度变成了o(q)+o(n)。

我们把题解写一下,(代码过程基本就是模板)

#include <iostream>
#include <vector>using namespace std;int main()
{int n,q;cin >>n>>q;//创建一个n+1个数大小的vector (0-n)vector <int>arr (n+1);for(int i=1;i<n+1;i++) cin>>arr[i];//创建前缀和数组vector<long long> dp(n+1);for(int i=1;i<n+1;i++) dp[i]=dp[i-1]+arr[i];//使用前缀和int l=0,r=0;while(q--){cin>>l>>r;cout<<dp[r]-dp[l-1]<<endl;}return 0;
}

http://www.dtcms.com/wzjs/370940.html

相关文章:

  • 买域名的网站网络营销的手段有哪些
  • 做网站需要编程基础宁波seo推荐推广渠道
  • 哪个行业最容易做网站seo外链技巧
  • 如何查看网站抓取频率指数函数公式
  • 新疆住房建设部官方网站bt兔子磁力搜索引擎最新版
  • 做网站图片需要什么格式seo岗位
  • 长沙网站设计广告外链平台
  • 个人域名怎么做网站考研最靠谱的培训机构
  • 如何做旅游网站超级外链吧外链代发
  • 国际最好的摄影作品网站sem竞价教程
  • 做国外网站的站长百度账号是什么
  • 美食网站建设的功能上海优化网站公司哪家好
  • 网站制作公司哪家好seo臻系统
  • 微商城代运营sem优化推广
  • 美食网站制作模板磁力蜘蛛种子搜索
  • 今日头条网站用什么做的营销策划公司取名大全
  • 开个免费的网站多少钱怎么寻找网站关键词并优化
  • 崇卅市网站建设在线培训app
  • 注册网站多久百度代运营
  • 外贸没有公司 如何做企业网站?web网站模板
  • 网站建设重点步骤网络网站
  • 淄博网站建设公司三农子域名网址查询
  • 信誉好的龙岗网站设计智能网站排名优化
  • xuzhou网站制作点击器免费版
  • 家具网站建设策划网站seo诊断分析报告
  • 黑色企业网站营销型网站建设价格
  • web的网站开发百度数据平台
  • 中文网页seo入门视频
  • 可以拿自己电脑做网站主机石家庄新闻网
  • 敦煌网网站评价爱站关键词挖掘old