c++之提高A(前缀和)(第三课)

发布时间:2026/9/27 7:45:07
c++之提高A(前缀和)(第三课) 1.前文嗯对在昨天作者写了一些无脑的玩意大家就当个乐子看。顺便放一下网址昨天的东西2.正文2.1前缀和的介绍讲一个小故事虽然纯属虚构从前有一个程序员他想求多个从第个数到第个数的总和。假设下面的变量代表的数字全都不超过他首先就想到要输入个数再输入代表要测几次。再分别输入和用一个变量求从第个数到第个数的总和。代码大致是这样的#includebits/stdc.h using namespace std; int a[10005]; int main() { int n,m; cinn; for(int i1;in;i) { cina[i]; } cinm; for(int i1;im;i) { int sum0,x,y; cinxy; for(int jx;jy;j) { suma[j]; } coutsumendl; } return 0; }听起来很简单但他发现如果评测机一秒钟测试上限是和等于或接近时时间就会超过一秒钟。为此他想破脑袋才想出来了一个绝妙的方法——前缀和。2.2前缀和的代码他告诉你前缀和是怎么运作的假设有一个数组里面的元素是这样的1、3、5、7、9。让你求第二个到第四个的和。正常人都会一个个加。可前缀和不是这样。它在输入数组的时候就开始了。#includebits/stdc.h using namespace std; int a[10005]; int s[10005]; int main() { int n,m; cinn; for(int i1;in;i) { cina[i]; s[i]s[i-1]a[i]; } return 0; }此时数组前缀和数组里面的值是1、4、9、16、25。求第二个数到第四个数的和就是s[4]-s[1];你可能会问为什么要减[1]而不是[2]呢他又说“看看数组里的数”一个个加的做法35715。前缀和的做法16-115。这可快多了这个程序员又把下面代码放到评测机里测试#includebits/stdc.h using namespace std; int a[10005]; int s[10005]; int main() { int n,m; cinn; for(int i1;in;i) { cina[i]; s[i]s[i-1]a[i]; } cinm; for(int i1;im;i) { int x,y; cinxy; couts[x]-s[y-1]endl; } return 0; }我去什么时间超限不是秒了吗至此故事结束。逃新手小白提高A

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询