题解 B4081
[语言月赛 202412] 旗鼓相当的对手 题解
Source & Knowledge
本题来源于 2024 年 12 月的语言月赛,主要考察复杂的逻辑判断和比较结构。
文字题解
题目大意
本题要求找出在两场 XCPC 赛事中,四支队伍之间有多少对『旗鼓相当的对手』。所谓旗鼓相当的对手,指的是两支队伍在一场比赛中的排名一高一低,在另一场比赛中的排名则相反。
解析
读入
首先需要读取两行整数,分别代表两场比赛中四支队伍的排名。
int A1, B1, C1, D1, A2, B2, C2, D2;
cin >> A1 >> B1 >> C1 >> D1;
cin >> A2 >> B2 >> C2 >> D2;
判断旗鼓相当的对手
我们需要比较每一对队伍在两场比赛中的排名,来判断它们是否为旗鼓相当的对手。由于队伍数量固定且只有四支,我们可以通过 if 语句来实现这一点。
【判断逻辑】
对于每一对队伍 (x, y),我们需要检查以下条件是否满足:
- 在第一场比赛中,
x的排名小于y的排名,并且在第二场比赛中,x的排名大于y的排名; - 或者,在第一场比赛中,
x的排名大于y的排名,并且在第二场比赛中,x的排名小于y的排名。 我们可以通过枚举每一对队伍来检查上述条件。int count = 0; // 检查 A 和 B if ((A1 < B1 && A2 > B2) || (A1 > B1 && A2 < B2)) count++; // 检查 A 和 C if ((A1 < C1 && A2 > C2) || (A1 > C1 && A2 < C2)) count++; // 检查 A 和 D // ... (类似地检查其他队伍对)输出
最后,输出计算出的旗鼓相当的对手对数。
cout << count << endl;通过上述步骤,我们可以有效地计算出两场比赛中旗鼓相当的对手对数。注意,由于题目保证了排名是 1 到 4 的整数,并且每个整数在每场比赛中恰好出现一次,因此我们可以直接比较排名而不用担心重复或无效的排名。