solution-cf1187a

对于这道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;
}
上一篇:392.判断子序列


下一篇:384. 打乱数组