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;
}
目录
相关文章
|
28天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
37847 151
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
10天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
4782 39
|
6天前
|
存储 人工智能 负载均衡
阿里云OpenClaw多Agent实战宝典:从极速部署到AI团队搭建,一个人=一支高效军团
在AI自动化时代,单一Agent的“全能模式”早已无法满足复杂任务需求——记忆臃肿导致响应迟缓、上下文污染引发逻辑冲突、无关信息加载造成Token浪费,这些痛点让OpenClaw的潜力大打折扣。而多Agent架构的出现,彻底改变了这一现状:通过“单Gateway+多分身”模式,让一个Bot在不同场景下切换独立“大脑”,如同组建一支分工明确的AI团队,实现创意、写作、编码、数据分析等任务的高效协同。
1423 22
|
23天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
8530 24
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
22天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
5563 12
|
5天前
|
人工智能 JavaScript Linux
别再花钱买云服务器了!OpenClaw 本地部署保姆级教程,10分钟拥有私人AI助理(附阿里云简单部署流程)
2026年,AI私人助理已从“高端配置”变成“日常刚需”,而OpenClaw(原Clawdbot,曾用名Moltbot)作为开源界的“黑马”,凭借自然语言驱动、多技能扩展、零门槛上手的核心优势,成为无数人打造私人AI助理的首选——它无需复杂代码基础,无需高价云服务器,只要你有一台普通电脑(Windows、Mac、Linux均可),跟着步骤操作,10分钟就能完成本地部署,同时也支持阿里云简单部署,兼顾“零成本本地使用”与“云端稳定托管”双重需求,彻底打破“AI助理必花钱”的误区。
1255 5
|
8天前
|
人工智能 JavaScript API
Windows系统OpenClaw保姆级部署指南:本地+云端双方案,零技术基础也能玩转AI助手
在AI办公自动化全面普及的2026年,OpenClaw(原Clawdbot、Moltbot)凭借“自然语言指令操控、多任务自动化执行、多工具无缝集成”的核心优势,成为个人与轻量办公群体打造专属AI助手的首选。它不仅能通过聊天互动响应需求,更具备“动手”和“跑腿”的硬核能力——“手”可读写本地文件、执行代码、操控命令行,“脚”能联网搜索、访问网页并分析内容,“大脑”则可灵活接入Qwen、OpenAI等云端API,或利用本地GPU运行模型,真正实现“聊天框里办大事”。
1179 7