zoukankan      html  css  js  c++  java
  • 【NOI OL #3】水壶

    题目链接

    因为水壶只能倒水给相邻的下一个水壶,而且最后只能喝掉一个水壶里的水,所以喝掉的水壶里的水一定来自于左侧的连续子序列之和,而用在其他地方的倒水次数都浪费了。

    所以最优解就是长度为$k+1$的最大子序列之和。因为元素全都是自然数,所以预处理前缀和,枚举区间起点求最大即可。

    代码(100分):

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<vector>
    #include<queue>
    #include<map>
    #include<set>
    #define IL inline
    #define RG register
    #define _1 first
    #define _2 second
    using namespace std;
    const int N=1e6;
    
        int n,k,a[N+3];
    
    int main(){
        scanf("%d%d",&n,&k);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        
        a[0]=0;
        for(int i=1;i<=n;i++)
            a[i]+=a[i-1];
        int ans=0;
        for(int i=1;i+k<=n;i++)
            ans=max(ans,a[i+k]-a[i-1]);
        printf("%d",ans);
    
        return 0;
    
    }
    View Code
  • 相关阅读:
    mysql 统计数据库基本资源sql
    java ffmpeg (Linux)截取视频做封面
    shutil模块
    json模块与pickle模块
    hashlib模块
    sys模块
    os模块
    paramiko模块
    Python reduce() 函数
    瀑布流展示图片
  • 原文地址:https://www.cnblogs.com/Hansue/p/12959161.html
Copyright © 2011-2022 走看看