求助P1353
  • 板块学术版
  • 楼主szk2022
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/7 09:32
  • 上次更新2023/11/3 11:14:29
查看原帖
求助P1353
790279
szk2022楼主2023/7/7 09:32
#include<bits/stdc++.h>
using namespace std;
int long long n,m,ansm,ansm2,sum,a[10000001],dp[10000001],dp2[10000001];
int main(){
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
	}
	for(int i=1;i<=n;i++){
		if(ansm<m and ansm+1<n-i){
			dp[i]=dp[i-1]+a[i];
			ansm++;
		}else{
			while(ansm--){
				dp[i]=dp[i-1];
				i++;
				if(i==n){
					dp[i]=dp[i-1];
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		if(ansm2==0){
			dp2[i]=dp2[i-1]+a[i];
			ansm2++;
		}else if(ansm2>0){
			dp2[i]=dp2[i-1];
			ansm2--;
		}
	}
	for(int i=1;i<=n;i++){
		dp2[i]=max(dp[i],dp2[i]);
	}
	printf("%lld",dp2[n-1]);
}
2023/7/7 09:32
加载中...