6 条题解

  • 0
    @ 2026-4-9 14:56:26

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.StringTokenizer;

    public class Main { public static void main(String[] args) throws IOException { FastScanner fs = new FastScanner(); PrintWriter out = new PrintWriter(System.out);

    	int n = fs.nextInt();
    	int k = fs.nextInt();
    	int[] s = new int[n + 1];
    	for(int i = 0;i < n;i++) {
    		s[i + 1] = s[i] + fs.nextInt();
    	}
    	int maxNum = 0;
    	for(int r = k + 1;r < n + 1;r++) {
    		maxNum = Math.max(maxNum, s[r] - s[r - k - 1]);
    	}
    	out.println(maxNum);
    	out.flush();
    }
    
    static class FastScanner {
    	BufferedReader br;
    	StringTokenizer st;
    
    	public FastScanner() {
    		br = new BufferedReader(new InputStreamReader(System.in));
    	}
    
    	boolean hasNext() throws IOException {
    		while (st == null || !st.hasMoreTokens()) {
    			String line = br.readLine();
    			if (line == null)
    				return false;
    			st = new StringTokenizer(line);
    		}
    		return true;
    	}
    
    	public String next() throws IOException {
    		hasNext();
    		return st.nextToken();
    	}
    
    	public int nextInt() throws IOException {
    		return Integer.parseInt(next());
    	}
    
    	public long nextLong() throws IOException {
    		return Long.parseLong(next());
    	}
    
    	public double nextDouble() throws IOException {
    		return Double.parseDouble(next());
    	}
    
    	public String readLine() throws IOException {
    		return br.readLine();
    	}
    }
    

    }

    • 0
      @ 2026-3-28 21:34:08
      #include<bits/stdc++.h>
      using namespace std;
      int a[1000005];
      int sum[1000005];
      int ans=0;
      
      
      int main()
      {
          ios::sync_with_stdio(false);
          cin.tie(0);
          int n,k;
          cin>>n>>k;
          for(int i=1;i<=n;++i)
          {
              cin>>a[i];
              sum[i]=sum[i-1]+a[i];
          }
          for(int i=1;i<=n-k;++i)
          {
              ans=max(ans,(sum[i+k]-sum[i-1]));
          }
          cout<<ans;
      
      }
      
      • 0
        @ 2026-3-9 14:32:53

        一道很标准的一维前缀和题,由于倒水是只能往下一个杯子里倒,并且没有容量上限,所以问题可以简化为求k长区间和的最大值问题,只需先预处理前缀和数组,并枚举所有可能的左边界l,利用前缀和数组找出和最大的值输出即可。复杂度O(n)。

        • 0
          @ 2026-3-9 14:22:55
          import sys
          input = lambda:sys.stdin.readline().strip()
          
          n=int(input())
          k=int(input())
          a=[0]+list(map(int,input().split()))
          s=[0]*len(a)
          
          for i in range(1,n+1):
              s[i]=s[i-1]+a[i]
          
          ans=0
          for l in range(1,n-k+1):
              r=l+k
              ans=max(ans,s[r]-s[l-1])
          print(ans)
          
          • 0
            @ 2026-3-8 15:58:36

            import sys data = sys.stdin.buffer.read().split() n = int(data[0]) k = int(data[1]) waters = list(map(int, data[2:2 + n])) len_waters = len(waters) pre_sum=[0]*(len_waters+1) for i in range(1,len_waters+1): pre_sum[i]=pre_sum[i-1]+waters[i-1] max_water=0 for p in range(1,len_waters+1): start=max(1,p-k) total = pre_sum[p] - pre_sum[start - 1] max_water = max(max_water, total) print(max_water)

            • 0
              @ 2026-3-8 15:57:45

              import sys data = sys.stdin.buffer.read().split() n = int(data[0]) k = int(data[1]) waters = list(map(int, data[2:2 + n])) window_sum=0 len_waters = len(waters) max_waters = 0 left=0 right=0 while right<len_waters: c=waters[right] window_sum+=c right+=1 while right-left>k+1: window_sum-=waters[left] left+=1 max_waters=max(max_waters,window_sum) print(max_waters)

              • 1

              信息

              ID
              160
              时间
              1000ms
              内存
              256MiB
              难度
              2
              标签
              递交数
              432
              已通过
              180
              上传者