Codeforces Round #667 (Div. 3) B. Minimum Product (贪心,数学)

-
题意:给你\(a\)和\(b\)两个数,每次操作可以是任意一个数\(-1\),最多操作\(n\),并且\(a\ge x\),\(b\ge y\),求操作后\(a*b\)的最小值.
-
题解:观察样例并且在纸上推一推发现,我们要让\(a\)和\(b\)中,小的那个尽可能的小,然后模拟一下就好了.
-
代码:
int t; ll a,b,x,y,n; int main() { //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); t=read(); while(t--){ a=read(); b=read(); x=read(); y=read(); n=read(); ll cnt1=max(x,a-n); ll cnt2=max(y,b-n); if(cnt1>cnt2){ swap(a,b); swap(x,y); } ll mi=min(n,a-x); n-=mi; a-=mi; mi=min(n,b-y); b-=mi; printf("%lld\n",a*b); } return 0; }
𝓐𝓬𝓱𝓲𝓮𝓿𝓮𝓶𝓮𝓷𝓽 𝓹𝓻𝓸𝓿𝓲𝓭𝓮𝓼 𝓽𝓱𝓮 𝓸𝓷𝓵𝔂 𝓻𝓮𝓪𝓵
𝓹𝓵𝓮𝓪𝓼𝓾𝓻𝓮 𝓲𝓷 𝓵𝓲𝓯𝓮

浙公网安备 33010602011771号