返回顶部

Codeforces Round #654 (Div. 2) C. A Cookie for You (思维)

  • 题意:有\(a\)个蛋糕,\(b\)个巧克力,第一类人有\(n\)个,总是吃多的东西(若\(a>b\),吃蛋糕,否则吃巧克力),第二类人有\(m\)个,总是吃少的,可以随便调整这两类人吃的顺序,问是否能让所有人都吃到东西.

  • 题解:首先\(a+b\ge n+m\),这个条件是一定要成立的, 然后我们最优先的方法一定是让第二类人先吃,因为假如让第一类人先吃的话,他们会先吃目前最多的食物,然后如果吃到目前的食物与另一种数目相等的话,就要去吃另一种,这样,当第二类人吃的时候,因为他们只能吃少的那种食物,所以由于第一类人抢了他们的食物,可能会出现不够吃的情况,所以先让第二类人吃数目少的那种食物一定是最优解,或者说第一类人由于可以跳来跳去,所以永远够吃,而第二类人不能跳,只能吃少的吃到死,所以要想满足条件,那么少的那种食物的数目一定要大于第二类人的个数,即\(min(a,b)\ge m\).

  • 代码:

    int t;
    ll a,b,n,m;
     
     
    int main() {
        ios::sync_with_stdio(false);cin.tie(0);
        cin>>t;
         while(t--){
          cin>>a>>b>>n>>m;
          if(m<=min(a,b)&&n+m<=a+b){
            cout<<"Yes"<<endl;
          }
          else{
            cout<<"No"<<endl;
          }
     
         }
        return 0;
    }
    
    
posted @ 2020-07-07 15:13  _Kolibri  阅读(171)  评论(0)    收藏  举报