萌新第一绿10分求助
  • 板块P1651 塔
  • 楼主wangshenluogu
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/28 14:23
  • 上次更新2024/5/28 19:18:53
查看原帖
萌新第一绿10分求助
943498
wangshenluogu楼主2024/5/28 14:23

代码见下:

#include<bits/stdc++.h>
using namespace std;
int dp[51][500001],N,a[101],sum=0;
int maxt(int a,int b,int c){
	return max(max(a,b),c);
}
int main(){
	cin>>N;
	for(int i=1;i<=N;i++){
		cin>>a[i];
		sum+=a[i];
	}
	for(int i=1;i<=N;i++){
		for(int j=0;j<=sum;j++){
		    if(j>=a[i]){
		        dp[i][j]=maxt(dp[i-1][j],dp[i-1][j-a[i]]+a[i],dp[i-1][j+a[i]]);
		    }else{
		        dp[i][j]=maxt(dp[i-1][j],dp[i-1][j-a[i]]+a[i],dp[i-1][a[i]-j]+j);
		    }
		}
	}
	cout<<dp[N][0]<<endl;
    return 0;
}

记录:https://www.luogu.com.cn/record/160524917

2024/5/28 14:23
加载中...