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; }
𝓐𝓬𝓱𝓲𝓮𝓿𝓮𝓶𝓮𝓷𝓽 𝓹𝓻𝓸𝓿𝓲𝓭𝓮𝓼 𝓽𝓱𝓮 𝓸𝓷𝓵𝔂 𝓻𝓮𝓪𝓵
𝓹𝓵𝓮𝓪𝓼𝓾𝓻𝓮 𝓲𝓷 𝓵𝓲𝓯𝓮

浙公网安备 33010602011771号