这题主要就是考ACM的规则
唉,我一直在进行ACM和类似ACM的比赛,结果规则都不是很清楚,这题我WA了几次,失败。
我写这个主要博客主要是让我自己清楚一下ACM的比赛规则。
一般的规则我们都很清楚了,现在说一下我之前不是很清楚的。
已经AC的题不管你之后怎么提交都不影响你的时间。
交的代码没AC的一次会罚时20分钟。
上面的罚时是错的题罚时,如果该题没过不计入你的时间,该题过了则一并计入你的时间。
详细见代码
#include <bits/stdc++.h>
using namespace std;
int vis[15],_time[15];//vis[]记录题目是否AC,_time[]记录每道题的时间
int main()
{
int T,n,m,ans,num,h,mi;
char str[5];
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
ans=0;
memset(vis,0,sizeof(vis));
memset(_time,0,sizeof(_time));
for(int i=1;i<=m;i++)
{
scanf("%d %d:%d %s",&num,&h,&mi,str);
num %= 1000;
if(vis[num]) continue; //已经AC的题不用再管,因为不会再罚时
if(strcmp(str,"AC")==0)
{
vis[num]=1; //将该题置为AC
ans += h*60+mi+_time[num]; //AC后把该题时间计入你的总时间
}
else
{
_time[num] += 20; //罚时罚在该题上,该题没AC则不计入总时间,AC则计入
}
}
num = 0; //num为AC的题目数
for(int i=1;i<=n;i++)
{
if(vis[i]) num++;
}
printf("%d %d\n",num,ans);
}
return 0;
}

本文深入探讨了ACM竞赛的基本规则,重点解释了已通过题目不再受后续提交影响的规则,以及每次未通过的提交将导致20分钟的罚时规定。通过一个C++示例代码进一步说明了如何计算参赛者的最终成绩。

170

被折叠的 条评论
为什么被折叠?



