CF991A 题解

题意翻译

N N N个人参加了考试。考试完成后,在通过的人中,有 A A A个人去了第一个酒店聚会,有 B B B个人去了第二个酒店聚会,有 C C C个人同时去了两个酒店聚会。

容斥问题

公式: N − ( A + B − C ) N-(A+B-C) N(A+BC)

公式解释:总人数-(去了第一个酒店聚会的+去了第二个酒店聚会的-多算的(两个都去的))=都没有去的

不懂的见 容斥原理(百度百科)

细节

答案要大于0
//至少有一个,因为主角没有通过考试
A不能大于等于N
B不能大于等于N
C不能大于等于N
//总人数不能小于去了任意一个酒店聚会的(或都去的)
通过人数大于等于A 
通过人数大于等于B 
通过人数大于等于C
//显而易见
C不能大于A 
C不能大于B
//都去的人数不能大于去了任意一个酒店聚会的人数
答案小于N

中和一下:

!(x>=n||y>=n||z>=n||z>x||z>y||sum<=0||n-sum<x||n-sum<y||n-sum<z||sum>n)

标程

#include<bits/stdc++.h>
using namespace std;
int x,y,z,n;
inline void read(register int &x){
	x=0;register char c=getchar();register bool f=0;
	while(c<'0'||c>'9'){if(c=='-')f=1;c=getchar();}
	while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+(c^48),c=getchar();
	if(f)x=-x;
}//快读
int main(){
	read(x),read(y);
	read(z),read(n);
	int ans=q-n-m+x;
	printf("%d\n",(x>=n||y>=n||z>=n||z>x||z>y||sum<=0||n-sum<x||n-sum<y||n-sum<z||sum>n)?-1:ans);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
国赛题目一般来源于科学与工程技术、人文与社会科学等领域经过适当简化加工的实际问题。参赛者不需要预先掌握深入的专门知识,只需要学过高等学校的数学基础课程。对于解题思路,可以根据题目要求进行以下步骤来完成建模和求解: 1. 理解题目:仔细阅读题目,理解问题的背景和要求。注意提取关键信息,明确问题的目标和约束条件。 2. 建立数学模型:根据题目的描述和要求,将实际问题转化为数学模型。可以使用已知的数学理论、公式和方法,结合问题的特点进行建模。根据问题类型,可以将问题归类为分类问题、优化问题、预测问题或评价问题。 3. 求解模型:根据建立的数学模型,使用适当的数学工具和方法进行求解。可能需要进行数值计算、优化算法或统计分析等操作,以得到问题的解答。 4. 分析和检验结果:对求解结果进行分析和检验,验证其合理性和正确性。可以通过对比实际数据或进行敏感性分析来评估模型的准确性和可靠性。 5. 模型的改进:根据对结果的分析和检验,对模型进行改进。可以尝试不同的假设或调整参数,以提高模型的性能和适应性。 综上所述,解题思路主要包括理解题目、建立数学模型、求解模型、分析和检验结果以及模型的改进。具体的解题思路会根据不同的题目和问题类型有所差异,建议参赛者根据具体题目要求和自身的数学知识经验,灵活运用数学方法和工具,进行问题的建模和求解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值