码迷,mamicode.com
首页 > 其他好文 > 详细

【2017中国大学生程序设计竞赛 - 女生专场】【hdu6023】Automatic Judge

时间:2020-10-14 20:05:01      阅读:17      评论:0      收藏:0      [点我收藏+]

标签:题目   com   rgba   can   布尔   ring   相同   多次   set   

问题描述

技术图片

输入格式

技术图片

输出格式

技术图片

样例输入

1

3 5

1002 00:02 AC

1003 00:05 WA

1003 00:06 WA

1003 00:07 AC

1002 04:59 AC

样例输出

2 49

题解


 题目大意:

一个队伍参加比赛,计算该队伍通过的题数和总罚时。

对于每一次提交,如果结果为AC则该题提交的时间会被计入罚时,此后再提交该题罚时不会增加,每一题AC前每一次提交不通过罚时20分钟。

输入

输入有多组数据,第一行包括一个整数T,表示数据组数,接下来每组数据第一行有两个整数n,m,表示比赛的题目总数和队伍的提交次数。接下来m行每行包括一个整数x和两个字符串t,s,其中x表示题号(格式为1001,1002,……1000+n),t为本次提交的时间,s为提交结果。数据保证00:00<=t<=05:00,且任意两个t不相同。

输出

对于每组数据,输出一行包括两个整数A,B,表示该队伍通过的题数和总罚时。


 

首先考虑怎么记录通过的题数。我们可以设一个计数器sum,用来统计通过的题数,为防止同一道题被多次计数,我们用一个布尔型数组vis记录该题是否被统计过。考虑到总题数不超过13且题号从1001开始,我们可以在读入时直接把x减1000作为题号,这样可以减小数组的范围。

对于一道题,AC后的提交不计入罚时,AC前每次不通过的提交罚时20分钟,我们再开一个布尔型数组ac,标记一道题目前是否AC过,若已经AC则不需要对该题做任何处理,否则若当前提交AC,则总罚时加上当前提交时间,通过题数加一(为方便计算,可在读入时把提交时间转化为分钟),否则无论提交时间是多少,总罚时加上20。

然后要注意数据输入可能不是按提交时间递增的,最好读入的时候按时间递增排序一下。

 

 1 #include <algorithm>
 2 #include <cstring>
 3 #include <cstdio>
 4 int n,m,T,ans,sum;
 5 bool ac[15],vis[15],f[15];
 6 char s[10],t[10];
 7 struct node{
 8     int x,p;
 9     bool AC;
10 }pro[105];
11 bool cmp(node x,node y)
12 {
13     return x.p<y.p;
14 }
15 int main()
16 {
17     int i,j,x;
18     scanf("%d",&T);
19     while (T--)
20     {
21         scanf("%d%d",&n,&m);
22         memset(vis,0,sizeof(vis));
23         memset(ac,0,sizeof(ac));
24         memset(f,0,sizeof(f));
25         ans=sum=0;
26         for (i=1;i<=m;i++)
27         {
28             scanf("%d%s%s",&x,s,t);
29             pro[i].x=x-1000;
30             pro[i].p=(s[1]-0)*60+(s[3]-0)*10+s[4]-0;
31             pro[i].AC=(t[0]==A);
32             if (!f[pro[i].x] && pro[i].AC)
33               f[pro[i].x]=1;
34         }
35         std::sort(pro+1,pro+m+1,cmp);
36         for (i=1;i<=m;i++)
37         {
38             if (ac[pro[i].x] || !f[pro[i].x]) continue;
39             if (!vis[pro[i].x]) sum++,vis[pro[i].x]=1;
40             if (pro[i].AC) ans+=pro[i].p,ac[pro[i].x]=1;
41             else ans+=20;
42         }
43         printf("%d %d\n",sum,ans);
44     }
45     return 0;
46 }  

【2017中国大学生程序设计竞赛 - 女生专场】【hdu6023】Automatic Judge

标签:题目   com   rgba   can   布尔   ring   相同   多次   set   

原文地址:https://www.cnblogs.com/rabbit1103/p/13811826.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!