zoukankan      html  css  js  c++  java
  • PAT A1025 Ranking 【排序】25

    解题思路

    1 用结构体Testee记录学生的信息:分数、考场、考号、考场排名、总排名
    2 每个考场学生录入结束后,对考场内考生排名,并设置名次
    3 所有考场学生录入结束后,对所有考场内考生排名,并设置名次
    4 排序规则:按照名次非递减(即按照分数非递增),同名次(即同分数)的考生,按照考号非递减排序

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    struct Testee {
    	string id;
    	int lid; //考场号 
    	int sc; //分数
    	int rkl; //本地排名
    	int rka; //总排名
    };
    bool cmp(Testee &t1,Testee &t2) {
    	if(t1.sc!=t2.sc)return t1.sc>t2.sc;
    	else return t1.id<t2.id;
    }
    void setrkl(vector<Testee>&ts) {
    	ts[0].rkl=1;
    	int k = ts.size();
    	for(int i=1; i<k; i++) {
    		ts[i].rkl=i+1;
    		if(ts[i].sc==ts[i-1].sc) {
    			ts[i].rkl=ts[i-1].rkl;
    		}
    	}
    }
    void setrkall(vector<Testee>&ts) {
    	ts[0].rka=1;
    	int k = ts.size();
    	for(int i=1; i<k; i++) {
    		ts[i].rka=i+1;
    		if(ts[i].sc==ts[i-1].sc) {
    			ts[i].rka=ts[i-1].rka;
    		}
    	}
    }
    int main() {
    	int n,k;
    	scanf("%d",&n);
    	Testee t;
    	vector<Testee> vts; //本地考生信息
    	vector<Testee> vtsall; //全部考生信息
    	for(int i=1; i<=n; i++) {
    		scanf("%d",&k);
    		vts.clear();
    		vts.resize(k);
    		for(int j=0; j<k; j++) {
    			cin>>vts[j].id>>vts[j].sc;
    			vts[j].lid=i; //考场号 
    //			vtsall.push_back(vts[j]); //加入总榜
    		}
    		sort(vts.begin(),vts.end(),cmp); //本地排名
    		setrkl(vts);
    		vtsall.insert(vtsall.end(),vts.begin(),vts.end());
    	}
    	sort(vtsall.begin(),vtsall.end(),cmp); //总榜排名
    	setrkall(vtsall);
    	printf("%d
    ",vtsall.size());
    	for(int i=0;i<vtsall.size();i++){
    		Testee t = vtsall[i];
    		printf("%s %d %d %d
    ",t.id.c_str(),t.rka,t.lid,t.rkl); 
    	}
    	return 0;
    }
    
  • 相关阅读:
    windows运行shell脚本
    Android Webview H5资源本地化
    Vscode开发Python环境安装
    Vscode开发Java环境搭建
    为什么索引可以提高效率?
    Java内存模型
    栈和队列----向有序的环形单链表中插入新节点
    栈和队列----单链表的选择排序
    栈和队列----将搜索二叉树转换成双向链表
    栈和队列----在单链表中删除指定值的节点
  • 原文地址:https://www.cnblogs.com/houzm/p/14408536.html
Copyright © 2011-2022 走看看