题解:P14120 [SCCPC 2021] Rock Paper Scissors

· · 题解

思路:先尽量做 DG 胜的情况,把这些情况用掉对应的牌。接着尽可能平局。剩下无法平局或胜利的情况就是失败了。
最终分数为胜利数减去失败数。

#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define cpy(a,b) copy(begin(a),end(a),begin(b))
#define ld long double
#define dot(x) fixed<<setprecision(x)
#define foru(a,b,c) for(ll a=b;a<=c;a++)

ll t;

int main(){
    cin>>t;
    while(t--){
        ll a,b,c,x,y,z,ans;
        cin>>a>>b>>c>>x>>y>>z;

        ll win1=min(a,y),win2=min(b,z),win3=min(c,x);
        a-=win1,y-=win1;
        b-=win2,z-=win2;
        c-=win3,x-=win3;
        ans=win1+win2+win3;

        ll wl1=min(a,x),wl2=min(b,y),wl3=min(c,z);
        a-=wl1,x-=wl1;
        b-=wl2,y-=wl2;
        c-=wl3,z-=wl3;

        ll lo1=min(a,z),lo2=min(b,x),lo3=min(c,y);
        ans-=(lo1+lo2+lo3);

        cout<<ans<<endl;
    }
    return 0;
}