前缀和及例题
Posted pureayu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前缀和及例题相关的知识,希望对你有一定的参考价值。
所谓前缀和,就是在一行数字中,第i个数以及它前面所有数字的和,一般都是利用前缀和计算。生活中一些算数问题也通常用到了前缀和的思想,
下面是一个例子:
假设小A作为一个会计,老板让他统计最近十天的总收入,他将这最近十天的收入算好,老板又让他计算最近五天的
营业额,小A又拿起计算器敲敲敲,老板又问最近一周的营业额,小A又拿起计算器敲敲敲。当老板再问起的时候,小A同学已经
懒得再算了。显然,这是一种低效且容易算错的算法。而如果用到前缀和,只需要在每一行的下面再加一行用来统计到当前天时的
总营业额,当需要计算某j - k天的营业额时,只需要将到第K天的总营业额减去第j天前面的总营业额就可以了。
下面贴一个例题:
1 #include <iostream> //一维前缀和 2 using namespace std; 3 int n, a[100010], f[100010], m; 4 int main(){ 5 cin >> n >> m; 6 f[0] = 0; 7 for(int i = 1; i <= n; i ++){ 8 cin >> a[i]; 9 f[i] = f[i - 1] + a[i]; 10 } 11 int minn = 0x3f3f3f3f; 12 for(int i = 1; i <= n - m + 1; i ++){ 13 int s = f[i + m - 1] - f[i - 1]; 14 if(s < minn){ 15 minn = s; 16 } 17 } 18 cout << minn << endl; 19 return 0; 20 }
以上是关于前缀和及例题的主要内容,如果未能解决你的问题,请参考以下文章
leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段