Codeforces Round #695 (Div. 2) C

C. Three Bags

我们发现这个题无非就是找一个最小的 吸收了其他两组的数再回报过去
但是自己组的只有两种选择
要吗直接负汇报过去 要吗就又要牺牲另一组的最小的一个数吸收这一组的贡献再回报给第三组
所以答案就是要吗牺牲两个最小的 要吗牺牲一组

void solve(){
    int a,b,c;cin>>a>>b>>c;
    vector<int>A(a),B(b),C(c);
    int sum1=0,sum2=0,sum3=0;
    for(int i=0;i<a;i++){
        cin>>A[i];
        sum1+=A[i];
    }
    for(int i=0;i<b;i++){
        cin>>B[i];
        sum2+=B[i];
    }
    for(int i=0;i<c;i++){
        cin>>C[i];
        sum3+=C[i];
    }
    int mnsum=min({sum1,sum2,sum3}),sum=sum1+sum2+sum3;
    int ans=0;
    int mna=*min_element(all(A)),mnb=*min_element(all(B)),mnc=*min_element(all(C));
    ans=max(ans,sum-2*mnsum);
    ans=max(ans,sum-2*(mna+mnb+mnc-max({mna,mnb,mnc})));
    cout<<ans<<endl;
}
posted @ 2022-11-11 16:52  ycllz  阅读(17)  评论(0)    收藏  举报