求第一题垃圾车 第二题代码: #include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; const int inf=0x3f3f3f3f; const int maxn=1e5+10; int n,m; int a[maxn]; int dp[maxn],sum[maxn]; int main() {     scanf("%d%d",&n,&m);     for(int i=0;i<n;i++){         scanf("%d",&a[i]);         if(i==0)sum[0]=a[0];         else sum[i]=sum[i-1]+a[i];     }     dp[0]=a[0];     for(int i=1;i<m;i++){ //长度<=m时         if(dp[i-1]<0){             dp[i]=dp[i-1]+a[i];         }else {             dp[i]=a[i];         }     }     int Min=sum[m-1];     //printf("%d\n",Min);     for(int i=m;i<n;i++){ //长度>m时         if(dp[i-m]<0){             dp[i]=dp[i-m]+sum[i]-sum[i-m];         }else{             dp[i]=sum[i]-sum[i-m];         }         //printf("%d--%d\n",i,dp[i]);         if(dp[i]<Min)Min=dp[i];     }     printf("%d\n",Min);     return 0; }
点赞 5

相关推荐

牛客网
牛客企业服务