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;
}


【PAT】1025. PAT Ranking (25)

题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1025 题目描述: Programming Ability Test (PAT) is or...
  • realxuejin
  • realxuejin
  • 2013年08月27日 15:37
  • 1105

【PAT1025】PAT Ranking

1025. PAT Ranking (25) 时间限制 200 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作...
  • tiantangrenjian
  • tiantangrenjian
  • 2013年11月28日 22:00
  • 1937

1025. PAT Ranking (25)/YHF/2016/11/17

PAT Ranking (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Prog...
  • yhf_naive
  • yhf_naive
  • 2016年11月17日 11:04
  • 218

PAT 1025. PAT Ranking

题目:http://pat.zju.edu.cn/contests/pat-a-practise/1025 题解: 先分别排序,再整体排序。 代码: #include #include #includ...
  • ACM_Ted
  • ACM_Ted
  • 2014年02月28日 15:15
  • 617

1025. PAT Ranking

题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1025 // 先本地排序,在全局排序 #include #include #incl...
  • Staibin
  • Staibin
  • 2014年03月16日 21:00
  • 453

PAT 1025. 反转链表 (25)

给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后...
  • gemire
  • gemire
  • 2014年03月08日 10:21
  • 4980

1025. PAT Ranking (25) PAT 甲级

Problem Description Programming Ability Test (PAT) is organized by the College of Computer Science...
  • SY_Yu
  • SY_Yu
  • 2016年07月19日 00:16
  • 322

PAT乙级—1025. 反转链表 (25)-native

给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后...
  • wanmeiwushang
  • wanmeiwushang
  • 2016年06月10日 22:18
  • 1299

PAT(Python)-1025:反转链表(25)

给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后...
  • qilixuening
  • qilixuening
  • 2017年04月16日 15:22
  • 205

1025_反转链表 (25)

#include #include typedef struct Node { int address; int data; int next; }Node; void reverse(Node...
  • fang_abc
  • fang_abc
  • 2015年02月11日 23:52
  • 491
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PAT 1025. PAT Ranking (25)
举报原因:
原因补充:

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