返回顶部

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

image-20200905195813550

  • 题意:给你\(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;
    }
    
posted @ 2020-09-05 20:08  _Kolibri  阅读(194)  评论(0)    收藏  举报