• 求和


    求和

    题目描述:

    出题人很困,所以不编题面了。
    给一个长度为n的序列,你需要求出其中连续m个数的和的最大值是多少。

    输入:

    第一行给出一个数字T,表示数组总数 (t<100)
    每组数据的第一行有两个数字 n,m (0<m≤n≤1e5)
    第二行有n个数字ai (0<ai<1e9)

    输出:

    对于每组数据,输出最大的连续m个数之和

    样例输入:

    2 
    5 2
    2 5 4 1 6
    8 3
    3 5 8 2 1 8 9 7
    

    样例输出:

    9
    24
    

    题解:

    一道简单地前缀和。

    /**********************************************************
    * @Author: 			   Maple
    * @Date:   			   2020-02-21 10:02:17
    * @Last Modified by:   Maple
    * @Last Modified time: 2020-02-21 10:07:59
    * @Remark: 
    **********************************************************/
    #include <bits/stdc++.h>
    #define lowbit(x) (x&(-x))
    #define CSE(x,y) memset(x,y,sizeof(x))
    #define INF 0x3f3f3f3f
    #define Abs(x) (x>=0?x:(-x))
    #define FAST ios::sync_with_stdio(false);cin.tie(0);
    using namespace std;
    
    typedef long long ll;
    typedef pair<int,int> pii;
    typedef pair<ll , ll> pll;
    
    const int maxn = 1e5+100;
    ll n,m,sum[maxn];
    
    int main()
    {
    	#ifndef ONLINE_JUDGE
    	freopen("in.in","r",stdin);
    	#endif
    	int t;
    	cin >> t;
    	while(t--){
    		cin >> n >> m;
    		for(int i = 1;i <= n;i++){
    			scanf("%lld",&sum[i]);
    			sum[i] += sum[i-1];
    		}
    		ll ans = 0;
    		for(int i = 0;i+m <= n;i++){
    			ans = max(sum[i+m] - sum[i],ans);
    		}
    		cout << ans << endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    MongodDB数据库安装和简单使用
    比较运算符
    Java习题
    JavaScript示例
    Java面向过程练习题7
    Java面向过程练习题6
    倒金字塔
    包含contains
    String 比较
    单词表
  • 原文地址:https://www.cnblogs.com/LeafLove/p/12340379.html
Copyright © 2020-2023  润新知