题目大意:有n个队伍之间比赛,每两个队伍之间都有一场比赛,因此一共有n(n-1) / 2场比赛,但是这里丢失了一场比赛的记录,现在让你通过n(n-1) /2 -1场仍然存在的比赛记录来判断丢失的那条比赛记录 是什么。

解题报告:因为每两个队伍之间都有一场比赛,所以每个队伍都应该有n-1次比赛,所以只要统计存在 的记录里面各个队伍出现的次数就可以了,判断出现次数不足n-1次的两个队伍便是丢失记录上的那两个队伍。然后统计一下判断出来的这两个队伍的胜利的次数,次数多的说明也是这场比赛胜利的队伍。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 
 8 int A[55],B[55];
 9 
10 int main()
11 {
12     int n;
13     while(scanf("%d",&n)!=EOF)
14     {
15         int x,y,num = n * (n - 1) / 2 -1;
16         memset(A,0,sizeof(A));
17         memset(B,0,sizeof(B));
18         while(num--)
19         {
20             scanf("%d%d",&x,&y);
21             A[x]++;
22             B[y]++;
23         }
24         int ans[2],f = 0;
25         for(int i = 1;i <= n;++i)
26         {
27             if((A[i]+B[i]) < (n-1))
28             ans[f++] = i;
29             if(f == 2) break;
30         }
31         if(A[ans[0]] < A[ans[1]]) swap(ans[0],ans[1]);
32         printf("%d %d\n",ans[0],ans[1]);
33     }
34     return 0;    
35 }
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-05-03
  • 2021-06-04
  • 2022-03-08
  • 2022-12-23
  • 2022-12-23
  • 2021-10-26
猜你喜欢
  • 2022-02-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
  • 2021-07-30
  • 2021-09-30
相关资源
相似解决方案