题解
查看原帖
题解
1485507
zyy0109楼主2024/11/30 20:04
#include<bits/stdc++.h>
using namespace std;
inline int read(){
    int x=0,f=1; char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')f=-1;ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=x*10+ch-'0';ch=getchar();
    }
    return x*f;
}
int sum,s[5],sum0,a[21],dp[1300];
int main(){
    int t=4;
    for(int i=1;i<=4;i++){
        s[i]=read();
    }
    for(int t=1;t<=4;t++){
        int sumt=0;sum0=0;
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=s[t];i++){
            a[i]=read();sumt+=a[i];
        }
        for(int i=1;i<=s[t];i++){
            for(int j=sumt>>1;j>=a[i];j--)
                dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
        }
        sum+=sumt-dp[sumt>>1];
    }
    printf("%d",sum);
    return 0;
}
2024/11/30 20:04
加载中...