本文主要是介绍1025 PAT Ranking(25分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目翻译:
简单来说,就是给你几个数组,分别排序后得到局部排名,最后再合在一起进行全局排名
题解思路:
先对局部进行排名(始终存放到一个数组中,否则后续要合并的话比较麻烦),然后总体排名。
代码:
#include<bits/stdc++.h>
using namespace std;
int N;struct node {string ID;int fr = 1, ln, lr = 1, s = 0;
};bool comp(node n1, node n2)
{if (n1.s > n2.s) return true;else if (n1.s == n2.s)return n1.ID < n2.ID;else return false;
}int main()
{vector<node> v;int pos = 0;cin >> N;for (int i = 0;i < N;i++){int K;cin >> K;while (K--){node temp;cin >> temp.ID >> temp.s;temp.ln = i + 1;v.push_back(temp);}sort(v.begin() + pos, v.end(), comp);v[pos].lr = 1;for (int i = pos + 1;i < v.size();i++){if (v[i].s == v[i - 1].s)v[i].lr = v[i - 1].lr;elsev[i].lr = i - pos + 1;}pos = v.size();}sort(v.begin(), v.end(), comp);v[0].fr = 1;for (int i = 1;i < v.size();i++){if (v[i].s == v[i - 1].s)v[i].fr = v[i - 1].fr;elsev[i].fr = i + 1;}cout << v.size() << endl;for (auto i : v)cout << i.ID << " " << i.fr << " " << i.ln << " " << i.lr << endl;
}
坑点:
无
这篇关于1025 PAT Ranking(25分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!