NOIP2011普及组 瑞士轮(重庆一中高2018级信息学竞赛测验4) 解题报告


做题思路(错解):拿到这道题时,想法比较简单,直接枚举,每进行一轮比赛,将选手的得分更新,并用sort按选手的得分由大到小(得分相同,按编号由小到大)排序,最后直接输出答案。因为感觉要超时,所以用了手工输入,结果最后还是对于大的数据超时了。这种算法的时间复杂度为O(R*2*N*log2N),很明显当所有数据取最大值时,会超时。


解题思路(正解):本题的正解是运用分治算法的归并排序,在输入后先用sort排序一次,然后,每进行一轮比赛,进行一次归并排序,归并排序时,将赢的选手得分加1,并放入win数组(结构体),将输的选手放入lose数组(结构体),然后就直接将win和lose数组归并进原数组中,最后输出答案即可。这种算法的时间复杂度为O(R*2*N),不会超时。需要注意的是,在归并排序时,要注意选手得分相同时,将编号小的排在前面。


#include<cstdio>
#include<cstdlib>
#include<iostream
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值