题目链接:Automatic Judge
题目大意:给你t组数据,每组一个n一个m,代表有n道题目,m个操作,每个操作有三个关键字,一个整数代表当前交的题目,一个字符串代表交这道题的时间,一个字符串代表得到的结果,问你总共通过多少题目,总罚时是多少
题目思路:直接模拟就很好,直接判断一下第一个字符是不是A就好了,不用去管那么多状态,然后AC之后就不管了。具体看代码
#include <bits/stdc++.h> using namespace std; struct node{ int num; char time[6]; char sta[5]; int fa; }p[1020]; int main(){ int t,n,m,nu; char tim[6],s[5]; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); for(int i = 1001;i <= 1000+n;i++){ p[i].num = i; p[i].sta[0] = 'W'; p[i].sta[1] = 'A'; p[i].fa = 0; } for(int i = 0;i < m;i++){ scanf("%d%s%s",&nu,&tim,&s); if(p[nu].sta[0] == 'A') continue; else if(s[0] == 'A'){ p[nu].sta[0] = 'A'; p[nu].fa += (tim[1]-'0')*60+(tim[3]-'0')*10+tim[4]-'0'; } else p[nu].fa += 20; } int sum = 0,cot = 0; for(int i = 1001;i <= 1000+n;i++){ if(p[i].sta[0] == 'A') sum += p[i].fa,cot++; else continue; } printf("%d %d\n",cot,sum); } return 0; }