70pts求助,#3 #4 #10 已经一连多发WA了
查看原帖
70pts求助,#3 #4 #10 已经一连多发WA了
590609
jiangjiangQwQ楼主2024/4/28 21:59
#include<iostream>
using namespace std;
const int N=8005+5;
#define ll long long
ll n,a[205],f[205][N],sum;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		sum+=a[i];
	}
	ll y=1e18,x=-1e18;
	ll v=sum/2,ans=1e18;
	for(int i=1;i<=n;i++){
		for(int j=n;j>=1;j--){
			for(int k=8000;k>=a[i];k--){
				f[j][k]=max(f[j][k],f[j-1][k-a[i]]+a[i]);
				if(abs(j-(n-j))<=1&&abs(f[j][k]-(sum-f[j][k]))<ans)
				ans=abs(f[j][k]-(sum-f[j][k])),x=max(f[j][k],sum-f[j][k]),y=min(f[j][k],sum-f[j][k]);
			} 
		}
	}
	cout<<y<<' '<<x;
	return 0;
}

明天晚上才能有回复,谢谢好心人。

2024/4/28 21:59
加载中...