新闻详情

新闻详情

首页 / 资讯中心 / 详情

UVa 790 Head Judge Headache

发布时间:2026/9/2 9:42:58来源:尧图网络
UVa 790 Head Judge Headache
题目描述你是ACM\texttt{ACM}ACM程序设计竞赛的裁判长。已知所有提交记录的日志每条记录包含队伍编号≤25\le 25≤25、题目编号A到G、提交时间h:mm、运行结果Y表示通过N表示未通过。需要计算最终排名规则如下排名按解决问题数量降序排列若解题数相同按总用时升序排列。总用时为所有已解决问题的用时之和每道已解决问题的用时为该题首次通过时的提交时刻从比赛开始到提交的分钟数加上该题此前被拒绝的提交次数乘以202020分钟。同一题的后续提交在首次通过之后被忽略。未解决问题的用时不计入总用时。若两个队伍解题数和总用时完全相同则排名相同并按队伍编号升序输出。输入格式输入第一行为测试用例个数随后有一个空行。每个测试用例包含若干行提交记录直到遇到空行。每行格式为队伍编号、题目字母、提交时间h:mm、状态Y/N。队伍编号为111到252525题目为A到G。所有记录可能无序按时间先后输入。输出格式对于每个测试用例输出表头RANK TEAM PRO/SOLVED TIME然后按排名输出每个参赛队伍格式为排名右对齐444列、队伍编号右对齐555列、解题数右对齐555列、总用时右对齐111111列。若解题数为000则只输出排名和队伍编号不输出解题数和时间。多个测试用例输出之间用空行分隔。排名相同的队伍并列同一排名但下一不同排名需跳过相应名次例如两支队伍并列第111则下一支队伍排名为333。样例输入1 1 A 0:50 N 3 A 1:12 Y 2 B 1:19 N 1 A 1:20 Y 2 B 1:35 N 1 B 1:36 N 3 B 1:40 Y 3 C 1:41 N 4 A 1:40 Y样例输出RANK TEAM PRO/SOLVED TIME 1 3 2 172 2 1 1 100 2 4 1 100 4 2题目分析每条记录需要按时间排序但输入本身可能已按时间顺序但为保证正确性仍需排序。对每个队伍维护每道题的通过状态、拒绝次数和通过时间。处理时若题目已通过则忽略后续记录若未通过则根据状态更新拒绝次数或记录通过时间。所有记录处理完毕后计算每队的解题总数和总用时。然后按规则排序并输出。解题思路实现步骤确定如下步骤1\texttt{1}1. 读入测试用例个数跳过空行。对每个用例初始化队伍数组队伍编号从111到252525但实际可能出现的最小编号为111最大不超过252525。步骤2\texttt{2}2. 读取所有提交记录存入结构体数组包含队伍编号转为000基、题目编号000到666、提交分钟数hh×60mmhh \times 60 mmhh×60mm、是否通过111为通过000为未通过。步骤3\texttt{3}3. 按提交时间升序排序记录。步骤4\texttt{4}4. 遍历排序后的记录若该队伍该题已通过则跳过否则若状态为N则该题拒绝次数加111若状态为Y则标记为已通过解题数加111记录该题用时为当前提交分钟数加上20×20 \times20×拒绝次数。步骤5\texttt{5}5. 所有记录处理完后计算每队总用时已通过题目的用时之和。标记哪些队伍至少有一条记录appeared\textit{appeared}appeared。步骤6\texttt{6}6. 按规则排序先按appeared\textit{appeared}appeared降序未出现的队伍排在最后但输出时可忽略再按解题数降序再按总用时升序最后按队伍编号升序。步骤7\texttt{7}7. 输出时遍历队伍只输出appeared\textit{appeared}appeared的队伍。排名计算若当前队伍与前一名成绩不同则排名更新为当前实际位置从111开始计数否则与前一排名相同。代码实现// Head Judge Headache// UVa ID: 790// Verdict: Accepted// Submission Date: 2018-01-11// UVa Run Time: 0.010s//// 版权所有C2018邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;structteam{inttid,solved[8],rejected[8],consumed[8],totalT,totalP,appeared;booloperator(constteamt)const{if(appeared!t.appeared)returnappearedt.appeared;if(totalP!t.totalP)returntotalPt.totalP;if(totalT!t.totalT)returntotalTt.totalT;returntidt.tid;}}teams[32];structrecord{inttid,pid,hh,mm,solved,elapsed;booloperator(constrecordl)const{if(elapsed!l.elapsed)returnelapsedl.elapsed;returnsolvedl.solved;}}records[10240];intmain(intargc,char*argv[]){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);intcases,tid,pid,hh,mm,solved,maxTeamId,recordCnt;charpletter,separator,status;istringstream iss;string line;cincases;cin.ignore(1024,\n);getline(cin,line);for(intC1;Ccases;C){memset(teams,0,sizeof(teams));for(inti0;i25;i)teams[i].tidi1;maxTeamId-1;recordCnt0;while(getline(cin,line)){if(line.length()0)break;iss.clear();iss.str(line);isstidpletterhhseparatormmstatus;records[recordCnt]record{tid-1,pletter-A,hh,mm,statusY?1:0,hh*60mm};}sort(records,recordsrecordCnt);for(inti0;irecordCnt;i){tidrecords[i].tid,pidrecords[i].pid,hhrecords[i].hh,mmrecords[i].mm,solvedrecords[i].solved;maxTeamIdmax(maxTeamId,tid);if(teams[tid].solved[pid])continue;else{if(!solved)teams[tid].rejected[pid];else{teams[tid].solved[pid]1;teams[tid].totalP;teams[tid].consumed[pid]hh*60mm20*teams[tid].rejected[pid];}}}for(inti0;i25;i)for(intj0;j7;j)teams[i].totalTteams[i].consumed[j];for(inti0;imaxTeamId;i)teams[i].appeared1;sort(teams,teams25);if(C1)cout\n;coutRANK TEAM PRO/SOLVED TIME\n;for(inti0,showRank1,trueRank1;i25;i,trueRank){if(!teams[i].appeared)break;if(i){if(teams[i].totalP!teams[i-1].totalP||teams[i].totalT!teams[i-1].totalT)showRanktrueRank;}coutsetw(4)rightshowRank;coutsetw(5)rightteams[i].tid;if(teams[i].totalP){coutsetw(5)rightteams[i].totalP;coutsetw(11)rightteams[i].totalT;}cout\n;}}return0;}总结本题模拟ACM\texttt{ACM}ACM竞赛排名规则关键在于正确处理每道题的提交记录按时间排序统计拒绝次数和通过时间忽略通过后的提交。总用时计算包括罚时。排名时处理并列名次并输出只有解题数为000的队伍时不显示解题数和时间。输入格式包含空行分隔测试用例需要妥善处理。该解法使用结构体排序清晰且易于扩展。时间复杂度O(Rlog⁡RT)O(R \log R T)O(RlogRT)其中RRR为记录数TTT为队伍数满足题目限制。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Krokiet 完整指南:免费开源磁盘清理工具,14 种扫描找出重复文件与相似图片 2026/9/2 14:01:43

Krokiet 完整指南:免费开源磁盘清理工具,14 种扫描找出重复文件与相似图片

Krokiet 完整指南:免费开源磁盘清理工具,14 种扫描找出重复文件与相似图片 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka …

阅读更多 →
如何从零构建智能体工具:Hugging Face Agents Course 完整实战指南 2026/9/2 14:01:43

如何从零构建智能体工具:Hugging Face Agents Course 完整实战指南

如何从零构建智能体工具:Hugging Face Agents Course 完整实战指南 【免费下载链接】agents-course This repository contains the Hugging Face Agents Course. 项目地址: https://gitcode.com/GitHub_Trending/ag/agents-course 问模型"今天纽约天气…

阅读更多 →
self-llm transformers 版本冲突:3 步定位匹配版本并修复部署与微调报错 2026/9/2 14:01:43

self-llm transformers 版本冲突:3 步定位匹配版本并修复部署与微调报错

self-llm transformers 版本冲突:3 步定位匹配版本并修复部署与微调报错 【免费下载链接】self-llm 《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多…

阅读更多 →
如何把扫描 PDF 变成可搜索文本:OCRmyPDF 从安装到批量处理完整教程 2026/9/2 14:01:43

如何把扫描 PDF 变成可搜索文本:OCRmyPDF 从安装到批量处理完整教程

如何把扫描 PDF 变成可搜索文本:OCRmyPDF 从安装到批量处理完整教程 【免费下载链接】OCRmyPDF OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched 项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF OCRmyPDF…

阅读更多 →
按键精灵实战:办公自动化脚本的安装、坐标排查与定时任务 2026/9/2 14:01:43

按键精灵实战:办公自动化脚本的安装、坐标排查与定时任务

按键精灵这类桌面自动化工具,最适合处理的场景是重复、固定、低风险的鼠标键盘操作。很多人一听到“自动化脚本”,首先想到的是游戏、抢票、批量点击,但这些方向很可能违反平台规则,也会把本来很稳定的脚本工具拖进一个容易出问题…

阅读更多 →
STM32与FPGA高速通信:FSMC并行总线设计详解 2026/9/2 13:58:43

STM32与FPGA高速通信:FSMC并行总线设计详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞