POJ 1030--Rating

博客介绍了POJ 1030问题的解决思路,涉及多个队伍在两场比赛中的排名比较。通过计算两场比赛的胜差来决定最终排名,对于只参加一场的队伍,需对比已知排名的队伍。文章提供了排序算法的思路和代码实现,重点在于链表的使用和复杂情况的处理。
摘要由CSDN通过智能技术生成

题意

题目大意是讲有若干个队伍参加两场比赛,其中一些队伍只参加了其中一场,每个队伍均有一个单独的ID(1-100).

比较出所有队伍最终排名.

example:

Contest1 Contest2
place id place id
1 9 1 3
2 7,1,4 2 5
5 5 3 1,10
6 15,8 5 6
8 31,18 6 9
10 17 7 19
8 4,20
10 21

排名要求:

  • 如果 A 队在两场比赛中均胜过其他一些队伍,那么这个 A 队的最终排名一定比这些队伍排名高.
  • 如果 A 队在第一场比赛表现胜过 B 队,在第二场不如 B 队,那么他们最终的排名根据两队在两场比赛中的排名差来判断.比如在比赛1中,1队的排名为2,5队的排名为5,胜差为3;在比赛2里,1队的排名为3,5队的排名为2,胜差为-1,总胜差为2.因此,最终排名1队高于5队.如果总胜差为0,那么他们最终的排名也相同,比如5队和9队.
  • 如果 A 队参加了两场比赛,B 队伍只参加了比赛1,并且在比赛1中A 队和 B 队的排名相同,同时在这个排名的位置没有其他参加了两场比赛并且最终排名和 A 队不相同的队伍,那么他们的最终排名也相同.比如10队与1队的最终排名相同,另外虽然7队的排名和1队、4队相同,但是因为1、4队最终排名不相同,所以7队的最终排名无法确定.在比赛2中,6队虽然排名在5队和9队的中间,但是因为5队和9队的最终排名相同,所以6队的排名也不能确定.
  • 对于只参加了一场比赛的队伍,则比较他们在比赛中与最终排名已经确定的队伍表现.比如3队.排名末尾的队伍,最终排名也为末尾,比如17和21队.

results:

final place both contests one contest only
1
2 1 10
3 5,9
4 19
5 4 20
6 8,15
7 18,31
8 17,21

分析

很明显,首先应该计算参加过两场比赛的队伍的最终排名,然后参加过一场比赛的队伍去比较排名已经确定的队伍,确定他们的最终排名.
为了方便排序,用了链表,先构建参加了两场比赛队伍的排名,然后遍历剩余队伍.只要不考虑掉情况,问题不大.

代码如下:
Memory: 816K Time: 79MS Length: 249LINES

#include <iostream>
#include <map>
#include <set>
#include <sstream>
#include <vector>
using namespace std;

const
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值