社区讨论
WA on #20,求大佬调试,悬一关qwq
CF229D Towers参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m691oc2h
- 此快照首次捕获于
- 2025/01/23 16:01 去年
- 此快照最后确认于
- 2025/01/23 16:12 去年
CPP
#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
回复
共 0 条回复,欢迎继续交流。
正在加载回复...