本题思路很简单,只要找到水容量之和最大的区间即可,注意区间长度为 k+1 不是 k,简单写个前缀和搞定!
#include<bits/stdc++.h> #define ll long long #define endl "\n" #define mem(vis, num) memset(vis, num, sizeof(vis)); using namespace std; int a[1000010]; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); mem(a, 0); int n, k, ans = 0; cin >> n >> k; for(int i = 1; i <= n; i++){ int t; cin >> t; a[i] += a[i - 1] + t; } for(int i = k + 1; i <= n; i++){ if(a[i] - a[i - k - 1] > ans){ ans = a[i] - a[i - k - 1]; } } cout << ans << endl; return 0; }