本题改错过程:
最开始一直测试点4出错,改了很久。
我之前写的的版本是,把0-30000分成100份,0~299 ,300~599这样子,然后每个考场的数据写入对应的区域,再分别排序,计算考场内排名。之后再对整体排序,计算整体排名。
后来就改成了现在的,把所有人的数据只放在前cnt单元内,考场内排序就对(cnt-k,cnt)的单元排序,整体排序也只对前cnt个单元排序,测试点4就通过了。
分析:
所以我觉得可能问题出在第一种方法计算整体排名的时候,因为有很多节点是没有赋值的,所以会出错(虽然输入样例,答案是正确的) 因此以后碰到这种排序题,尽量不要把没有赋值的节点放进排序比较中!!!
#include<iostream>
#include<cstdio>
#include<string>
#include<string>
#include<algorithm>
using namespace std;
int n,cnt=0;
struct node{
string id;
int sco=-1,loc,locrank,frank;
}p[30005];
bool