PAT 乙级 1085. PAT单位排行 (25) 【结构体排序】
题目链接
https://www.patest.cn/contests/pat-b-practise/1085
思路
结构体排序
要注意几个点
它的加权总分 是 取其整数部分
也就是 要 向下取整
然后这个操作要在排序操作之前
不能在输出的时候 进行
不然最后一个测试点 过不了
因为 假如
有两个学校的分数 分别是
195.1 195.2
如果排序按照这个排 就是 195.1 < 195.2
就会按照 总分来排
但实际上 向下取整之后 都是195 所以应该按照 考生人数 或者是单位码来排的
还有要注意的是 单位码 是小写
以及 排名的方式
AC代码
#include <cstdio>
#include <cstring>
#include <ctype.h>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <map>
#include <stack>
#include <set>
#include <numeric>
#include <sstream>
#include <iomanip>
#include <limits>
#define CLR(a) memset(a, 0, sizeof(a))
#define pb push_back
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef pair<string, int> psi;
typedef pair<string, string> pss;
const double PI = 3.14159265358979323846264338327;
const double E = exp(1);
const double eps = 1e-30;
const int INF = 0x3f3f3f3f;
const int maxn = 1e5 + 5;
const int MOD = 1e9 + 7;
struct Node
{
string name;
int tot;
double score;
int s;
};
bool comp(Node x, Node y)
{
if (x.s == y.s)
{
if (x.tot == y.tot)
return x.name < y.name;
else
return x.tot < y.tot;
}
return x.s > y.s;
}
int main()
{
int n;
cin >> n;
map <string, Node> m;
string id, school;
int score;
for (int i = 0; i < n; i++)
{
cin >> id >> score >> school;
int len = school.size();
for (int j = 0; j < len; j++)
if (school[j] >= 'A' && school[j] <= 'Z')
school[j] += 32;
m[school].tot++;
m[school].name = school;
if (id[0] == 'A')
m[school].score += score;
else if (id[0] == 'B')
m[school].score += score * 1.0 / 1.5;
else
m[school].score += score * 1.5;
}
map <string, Node>::iterator it;
vector <Node> ans;
for (it = m.begin(); it != m.end(); it++)
{
it->second.s = floor(it->second.score);
ans.pb(it->second);
}
sort(ans.begin(), ans.end(), comp);
int len = ans.size();
cout << len << endl;
printf("1 ");
cout << ans[0].name;
printf(" %d %d\n", ans[0].s, ans[0].tot);
int rank = 1;
for (int i = 1; i < len; i++)
{
if (ans[i].s != ans[i - 1].s)
rank = i + 1;
printf("%d ", rank);
cout << ans[i].name;
printf(" %d %d\n", ans[i].s, ans[i].tot);
}
}
PAT 乙级 1085. PAT单位排行 (25) 【结构体排序】的更多相关文章
- PAT A 1022. Digital Library (30)【结构体排序检索】
https://www.patest.cn/contests/pat-a-practise/1022 直接模拟, 输入,按id排序,检索 #include <iostream> #incl ...
- PAT(B) 1085 PAT单位排行(Java:20分)
题目链接:1085 PAT单位排行 (25 point(s)) 题目描述 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式 输入第一行给出一个正整数 N ...
- PAT乙级:1090危险品装箱(25分)
PAT乙级:1090危险品装箱(25分) 题干 集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清 ...
- PAT乙级:1070 结绳 (25分)
PAT乙级:1070 结绳 (25分) 题干 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟 ...
- PAT 甲级 1080 Graduate Admission (30 分) (简单,结构体排序模拟)
1080 Graduate Admission (30 分) It is said that in 2011, there are about 100 graduate schools ready ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 第m大的身份证号码(局部排序代全局、结构体排序)
第m大的身份证号码(点击) 时间限制: 1 Sec 内存限制: 128 MB ...
- 转载 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
转载自:http://www.cnblogs.com/cj695/p/3863142.html sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在 ...
- 【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...
随机推荐
- 下载SCI论文
今天帮汪博下了一下午SCI论文,见到了很多不知道的网站.顺便了解了一下: 首先进学校图书馆的网站,然后选择 WOS核心合集(含SCIE.SSCI.A&HCI.CPCI数据库) ---&g ...
- 应用设置Setting的实现
有非常多应用都在iOS设置中有相关的设置.例如以下图: 通过这个设置能够方便的相应用的一些主要的设置进行更改. 要完整的实现这个设置功能,有下面几方面问题须要解决: 1)设置的编写(实现设置的 ...
- ThinkPHP第一课 环境搭建
第一课 环境搭建 1.说明: ThinkPHP是一个开源的国产PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的. 最早诞生于2006年初.原名FCS.2007年元旦正式更名为Think ...
- Xshell 一款很养眼的配色方案推荐
Xshell 是个很好用的在 windows 下登陆 liunx 的终端原生支持中文,配合 Xftp 管理文件,同是免费软件可远比 Putty 好用多了面对枯燥的代码,我们需要一款很养眼的配色方案来保 ...
- Mjpg_Streamer 的移植
1. 移植mjpg-streamer a.1 移植libjpeg tar zxf libjpeg-turbo-1.2.1.tar.gz cd libjpeg-turbo-1.2.1 ./configu ...
- Buck电路匹配和二极管仿真模式
Buck带同步整流,关闭二极管仿真模式会使空载损耗大 利用二极管仿真模式提高降压转换器轻负载效率 Buck电路工作原理以及三种工作模式分析 一.Buck电路原理图 Buck电路,又称降压电路,其基 ...
- DisplayPort的时钟隐藏和时钟恢复
转:DisplayPort的时钟隐藏和时钟恢复 无时钟线的视频数据传输是DP协议的一大特点,将时钟信号隐藏在数据中是传输协议的设计趋势.时钟恢复技术也是DP芯片设计的关键技术.在这说一下在发送端时钟是 ...
- NoSQL数据库的分类
- VIM中保存编辑的只读文件
如何在VIM中保存编辑的只读文件 你是否会和我一样经常碰到这样的情景:在VIM中编辑了一个系统配置文件,当需要保存时才发现当前的用户对该文件没有写入的权限.如果已 经做了很多修改,放弃保存的确很懊恼, ...
- Angualr 实现复选框全选功能
html <html lang="en"> <head> <meta charset="UTF-8"> <title& ...