对于这道cf水题,我采取的方法是用数学上的最不利原则,尽可能的把最多的一种拿完后,再拿其他的。
根据容斥原理,只含棒子的蛋的数量=棒子数-两个物品都含的蛋的数量,只含玩具的也是同理。两个物品都含的蛋的数量=棒子数+玩具数-蛋数。
得到代码
int cnt = s + t - n;//cnt=两个物品都含的蛋
最终,我们只需要所有取只含棒子或玩具的蛋(哪种多取哪种),再把这个数量+1就是答案了。
代码:
#include<iostream>
using namespace std;
int main()
{
int T;
cin>>T;
for(int i = 1; i <= T; i++;)
{
int n,s,t;
cin>>n>>s>>t;//函数名与题面相同,不做解释
int cnt = s + t - n;//cnt = 两个物品都含的蛋数
cout<<max(s - cnt + 1, t - cnt + 1)<<endl;//比较
}
return 0;
}