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;
}
posted @ 2021-12-17 18:42  WRuperD  阅读(23)  评论(0编辑  收藏  举报

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

这是一条自定义内容

这是一条自定义内容