PAT 1025. PAT Ranking (25)

原创 2015年07月09日 10:03:20

题目说明:给出不同地区测试者的分数,计算出总排名和地区排名。

思路:简单的排序算法。先分别计算地区排名,然后合并所有vector,计算总排名。

代码:

#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;

struct Testee{
	string ID;
	int score;
	int location;
	int localrank;
	int finalrank;
};
vector<Testee> tee[103]; 
vector<Testee> alltee;
int N,K;
int total=0;

bool cmp(const Testee &a,const Testee &b){
	if(a.score>b.score)
		return true;
	else if(a.score<b.score)
		return false;
	else{
		if(a.ID<b.ID)
			return true;
		else
			return false;
	}
}

int main(){
	cin>>N;
	for(int i=1;i<=N;i++){
		cin>>K;
		total+=K;
		for(int j=0;j<K;j++){
			Testee temp;
			cin>>temp.ID>>temp.score;
			temp.location=i;	
			tee[i].push_back(temp);
		}
	}	
	//计算localrank 
	for(int i=1;i<=N;i++){	
		sort(tee[i].begin(),tee[i].end(),cmp);	
		int lrank=1;
		tee[i][0].localrank=lrank;
		for(int j=1;j<tee[i].size();j++){
			lrank++;
			if(tee[i][j].score==tee[i][j-1].score){
				tee[i][j].localrank=tee[i][j-1].localrank;
			}
			else{
				tee[i][j].localrank=lrank;
			}
		}
		
	}
	//合并所有区 
	for(int i=0;i<=N;i++){
		alltee.insert(alltee.end(),tee[i].begin(),tee[i].end());
	}
	//计算finalrank 
	sort(alltee.begin(),alltee.end(),cmp);	
	int frank=1;
	alltee[0].finalrank=frank;
	for(int i=1;i<alltee.size();i++){
		frank++;
		if(alltee[i].score==alltee[i-1].score){			
			alltee[i].finalrank=alltee[i-1].finalrank;
		}
		else{
			alltee[i].finalrank=frank;
		}	
	}
	
	cout<<total<<endl;
	for(int i=0;i<alltee.size();i++){
		printf("%s %d %d %d\n",alltee[i].ID.c_str(),alltee[i].finalrank,
		alltee[i].location,alltee[i].localrank);
	}
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

1025. PAT Ranking (25)

1025. PAT Ranking (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B ...

1025. PAT Ranking (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1025题目大意:给定N组学生,将N组学生按成绩分别进行组内排序和整体排序,输出每个学生的整体名次...

1025. PAT Ranking (25)

1. 原题: https://www.patest.cn/contests/pat-a-practise/1025 2. 思路: 题意: 对考生成绩进行局部和整体排名。 思路: 每个考生结构...

1025. PAT Ranking (25)

输入N N个地区 接着每个地区K 对应K个帐号和他的分数; 我这里用动态数组vector可以不断的把所有地区的id,score,location加入(.push_back) 到ranklist中...

1025. PAT Ranking (25)

原题地址:http://www.patest.cn/contests/pat-a-practise/1025Programming Ability Test (PAT) is organized by...

1025. PAT Ranking (25)

1025. PAT Ranking (25) #include #include #include #include #include using namespace std; clas...

1025. PAT Ranking (25)

一道水题,vector存储学生,每输入一个地方的学生,放入临时的vector中,并进行排序,设置好地方排名,然后都放入总的一个vector中,最后对总的vector进行sort,注意sort的时候如果...

1025. PAT Ranking (25)

题目: Programming Ability Test (PAT) is organized by the College of Computer Science and Technology ...

1025. PAT Ranking (25)

1025. PAT Ranking (25) 时间限制 200 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序...

1025. PAT Ranking (25)

Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhe...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)