题目来自网上(2333)
乍眼一看这道题好像很水,其实——的确很水。这其实只是一道普及组的题目而已啦。但我能一遍过还是很开森的。
暴力的话,每次处理完就sort一次,感觉很不错。但根据官方的数据这只有50分,因为复杂度是O(Rnlogn)的(n是2倍N)。
其实在心里想想就能想通,每次比赛总是排名相邻的两人比赛,赢着加分,输者不加不减。我们先sort一次,然后每次把选手分为两组——胜者组和败者组。我们就可以发现,两组的分数顺序还是有序的。恍然大悟!——归并排序!
于是就手打一遍,模拟胜负,记录,归并,循环R次即可。由于数据比较大,建议开读入优化。
下面标程双手奉上(写的有点丑):
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using name