WA on #20,求大佬调试,悬一关qwq
  • 板块CF229D Towers
  • 楼主RuanHaoJun
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/23 16:01
  • 上次更新2025/1/23 16:12:41
查看原帖
WA on #20,求大佬调试,悬一关qwq
710840
RuanHaoJun楼主2025/1/23 16:01
#include<bits/stdc++.h>
using namespace std;
const int N=5005;
int n,a[N],sum[N],dp[N][N];
//dp[i][j]表示前i个塔分为j段,最后一座塔的最小高度
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) 
		scanf("%d",a+i),sum[i]=sum[i-1]+a[i];
	memset(dp,0x3f,sizeof(dp));
	for(int i=1;i<=n;i++)
		dp[i][1]=sum[i];
	for(int j=2;j<=n;j++)
	{
		int x=1;
		while(x<=n and dp[x][j-1]==0x3f3f3f3f) x++;
		for(int i=j;i<=n;i++)
		{
			while(x<=n and dp[x][j-1]+sum[x]<=sum[i]) x++;
			if(x<=i and dp[x-1][j-1]!=0x3f3f3f3f) dp[i][j]=sum[i]-sum[x-1];	
		}
	}
	for(int i=n;i>=1;i--)
	{
		if(dp[n][i]!=0x3f3f3f3f)
		{
			cout<<n-i;
			return 0;
		}
	}
	return 0;
}

这是代码,错的那个点输出答案比正确答案多了1

2025/1/23 16:01
加载中...