总想不通
  • 板块P1651 塔
  • 楼主Evelyn_wsx_star
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/5/26 16:37
  • 上次更新2024/5/26 19:05:02
查看原帖
总想不通
1057081
Evelyn_wsx_star楼主2024/5/26 16:37
#include<bits/stdc++.h>
using namespace std;
int n,a[51],din=0;
int dp[51][500001];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		din=din+a[i];
	}
	memset(dp,-2,sizeof(dp));
	dp[0][0]=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=din;j++)
		{
			dp[i][j]=max(dp[i-1][j],dp[i-1][j+a[i]]);
			if(j>=a[i])
				dp[i][j]=max(dp[i][j],dp[i-1][j-a[i]]+a[i]);
			else
				dp[i][j]=max(dp[i][j],dp[i-1][a[i]-j]+j);
		}
	}
	
	if(dp[n][0]) cout<<dp[n][0]<<endl;
	else cout<<"-1"<<endl;
}

这个是ac了

但是把这个memset(dp,-2,sizeof(dp));改成memset(dp,-1,sizeof(dp));就只有50分,整个机房震惊了一下午

有大佬能解释下吗?

2024/5/26 16:37
加载中...