数据过水,建议加强
查看原帖
数据过水,建议加强
769006
crzcqh楼主2025/8/4 08:25
#include<iostream>
using namespace std;
long long dp[2][100005],a[100005],ans,pre;
int n,k,p=1;
int main()
{
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	for(int i=1;i<=n;i++)
	{
		dp[p][0]=pre;
		int m=min(i,k),j;
		for(j=1;j+7<=m;j+=8)
		{
			dp[p][j]=dp[p^1][j-1]+a[i];
			pre=max(pre,dp[p][j]);
			dp[p][j+1]=dp[p^1][j]+a[i];
			pre=max(pre,dp[p][j+1]);
			dp[p][j+2]=dp[p^1][j+1]+a[i];
			pre=max(pre,dp[p][j+2]);
			dp[p][j+3]=dp[p^1][j+2]+a[i];
			pre=max(pre,dp[p][j+3]);
			dp[p][j+4]=dp[p^1][j+3]+a[i];
			pre=max(pre,dp[p][j+4]);
			dp[p][j+5]=dp[p^1][j+4]+a[i];
			pre=max(pre,dp[p][j+5]);		
			dp[p][j+6]=dp[p^1][j+5]+a[i];
			pre=max(pre,dp[p][j+6]);
			dp[p][j+7]=dp[p^1][j+6]+a[i];
			pre=max(pre,dp[p][j+7]);																					
		}
		while(m-j+1)
		{
			dp[p][j]=dp[p^1][j-1]+a[i];
			pre=max(pre,dp[p][j]);
			j++;			
		}
		p^=1;
	}
	printf("%lld",pre);
	return 0;
}

这份代码可以直接草飞

2025/8/4 08:25
加载中...