非贪心!0pts求调
查看原帖
非贪心!0pts求调
909957
LITFLYR楼主2023/11/4 15:22
#include<bits/stdc++.h>
using namespace std;
int a[25],num[25];
int dp[2000],ans,cnt;
int main(){
	for (int i=1;i<=4;i++) cin >> a[i];
	for (int i=1;i<=4;i++){
		cnt=0;
		for (int j=1;j<=a[i];j++){
			cin >> num[j];
			cnt+=num[j];
		}
		for (int j=1;j<=a[i];j++){
			for (int k=cnt/2;k>=num[j];k--){
				dp[k]=max(dp[k],dp[k-num[j]]+num[j]);
			}
		}
		ans+=cnt-dp[cnt/2];
		for(int j=1;j<=cnt/2;j++) dp[j]=0;
	}
	cout << ans;
	return 0;
}

谢谢各位dalao

2023/11/4 15:22
加载中...