PAT (Advanced Level) Practice - 1012 The Best Rank(25 分)

简介: PAT (Advanced Level) Practice - 1012 The Best Rank(25 分)

题目链接:点击打开链接

题目大意:取要查询的学号的最优排名:指的是优先名次最高的选择,但若有多个名次一样的,则按 A > C > M > E 优先级来。若学号不存在,输出 “N/A”。

解题思路:略。

AC 代码

#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
struct RK
{
    char c;
    int rk;
};
struct node
{
    string id;
    int c,m,e,a;
}nds[3000];
struct peo
{
    RK rks[4];
};
unordered_map<string,peo> ump;
int cmp_c(node n1,node n2)
{
    return n1.c>n2.c;
}
int cmp_m(node n1,node n2)
{
    return n1.m>n2.m;
}
int cmp_e(node n1,node n2)
{
    return n1.e>n2.e;
}
int cmp_a(node n1,node n2)
{
    return n1.a>n2.a;
}
int cmp(RK r1,RK r2)
{
    if(r1.rk==r2.rk) return r1.c<r2.c;
    return r1.rk<r2.rk;
}
int main()
{
    int n,k,c,a,m,e;
    char id[10];
    while(~scanf("%d%d",&n,&k))
    {
        for(int i=0;i<n;i++)
        {
            scanf("%s%d%d%d",id,&c,&m,&e);
            nds[i].id=id;
            nds[i].c=c;
            nds[i].m=m;
            nds[i].e=e;
            nds[i].a=int((c+m+e)*1.0/3+0.5);
        }
        ump.clear();
        sort(nds,nds+n,cmp_c);
        node nd=nds[0];
        int rk=1;
        ump[nd.id].rks[0].rk=rk;
        ump[nd.id].rks[0].c='C';
        for(int i=1;i<n;i++)
        {
            nd=nds[i];
            if(nd.c==nds[i-1].c)
                ump[nd.id].rks[0].rk=rk, ump[nd.id].rks[0].c='C';
            else
                ump[nd.id].rks[0].rk=i+1, ump[nd.id].rks[0].c='C', rk=i+1;
        }
        sort(nds,nds+n,cmp_m);
        nd=nds[0];
        rk=1;
        ump[nd.id].rks[1].rk=rk;
        ump[nd.id].rks[1].c='M';
        for(int i=1;i<n;i++)
        {
            nd=nds[i];
            if(nd.m==nds[i-1].m)
                ump[nd.id].rks[1].rk=rk, ump[nd.id].rks[1].c='M';
            else
                ump[nd.id].rks[1].rk=i+1, ump[nd.id].rks[1].c='M', rk=i+1;
        }
        sort(nds,nds+n,cmp_e);
        nd=nds[0];
        rk=1;
        ump[nd.id].rks[2].rk=rk;
        ump[nd.id].rks[2].c='Z';
        for(int i=1;i<n;i++)
        {
            nd=nds[i];
            if(nd.e==nds[i-1].e)
                ump[nd.id].rks[2].rk=rk, ump[nd.id].rks[2].c='Z';
            else
                ump[nd.id].rks[2].rk=i+1, ump[nd.id].rks[2].c='Z', rk=i+1;
        }
        sort(nds,nds+n,cmp_a);
        nd=nds[0];
        rk=1;
        ump[nd.id].rks[3].rk=rk;
        ump[nd.id].rks[3].c='A';
        for(int i=1;i<n;i++)
        {
            nd=nds[i];
            if(nd.a==nds[i-1].a)
                ump[nd.id].rks[3].rk=rk, ump[nd.id].rks[3].c='A';
            else
                ump[nd.id].rks[3].rk=i+1, ump[nd.id].rks[3].c='A', rk=i+1;
        }
        for(unordered_map<string,peo>::iterator it=ump.begin(); it!=ump.end(); it++)
            sort(it->second.rks,it->second.rks+4,cmp);
        for(int i=0;i<k;i++)
        {
            scanf("%s",id);
            if(ump[id].rks[0].rk==0) puts("N/A");
            else printf("%d %c\n",ump[id].rks[0].rk,ump[id].rks[0].c=='Z'?'E':ump[id].rks[0].c);
        }
    }
    return 0;
}
目录
相关文章
|
2天前
|
云安全 人工智能 自然语言处理
AI说的每一句话,都靠谱吗?
阿里云提供AI全栈安全能力,其中针对AI输入与输出环节的安全合规挑战,我们构建了“开箱即用”与“按需增强”相结合的多层次、可配置的内容安全机制。
|
6天前
|
存储 人工智能 安全
AI 越智能,数据越危险?
阿里云提供AI全栈安全能力,为客户构建全链路数据保护体系,让企业敢用、能用、放心用
|
9天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
3天前
|
消息中间件 安全 NoSQL
阿里云通过中国信通院首批安全可信中间件评估
近日,由中国信通院主办的 2025(第五届)数字化转型发展大会在京举行。会上,“阿里云应用服务器软件 AliEE”、“消息队列软件 RocketMQ”、“云数据库 Tair”三款产品成功通过中国信通院“安全可信中间件”系列评估,成为首批获此认证的中间件产品。此次评估覆盖安全可信要求、功能完备性、安全防护能力、性能表现、可靠性与可维护性等核心指标,标志着阿里云中间件产品在多架构适配与安全能力上达到行业领先水平。
303 192
|
3天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
357 167
|
2天前
|
开发者
「玩透ESA」ESA启用和加速-ER在加速场景中的应用
本文介绍三种配置方法:通过“A鉴权”模板创建函数并设置触发器路由;在ESA上配置回源302跟随;以及自定义响应头。每步均配有详细截图指引,帮助开发者快速完成相关功能设置,提升服务安全性与灵活性。
303 2
|
8天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
458 93