HDU 6023-Automatic Judge(模擬題)
阿新 • • 發佈:2018-11-10
分析
主要就是多次ac取時間最短的那次。
-=和%=1000的問題
如果沒有ac則罰時不計,都知道的 我卻忘考慮了。
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+5; struct node{ int id,rtm; string ans,tm; }a[maxn]; bool cmp(node a,node b){ return a.tm<b.tm; } bool vis[maxn]; bool isac[maxn]; int main(){ int t,n,m; scanf("%d",&t); while(t--){ int sum=0,cnt=0; memset(vis,0,sizeof(vis)); memset(isac,0,sizeof(isac)); scanf("%d%d",&n,&m); for(int i=0;i<m;i++){ cin>>a[i].id>>a[i].tm>>a[i].ans; //scanf("%d %s %s",&a[i].id,a[i].tm,a[i].ans); scanf不能讀string a[i].id-=1000; a[i].rtm=(a[i].tm[1]-48)*60+(a[i].tm[3]-48)*10+(a[i].tm[4]-48);//處理時間 if(a[i].ans=="AC") isac[a[i].id]=1; //最終是否ac //cout<<a[i].rtm<<endl; } sort(a,a+m,cmp);//不用 for(int i=0;i<m;i++){ if(vis[a[i].id]) continue; if(a[i].ans=="AC"){ sum+=a[i].rtm; vis[a[i].id]=1; cnt++; } else { if(isac[a[i].id]==1) sum+=20; } } printf("%d %d\n",cnt,sum); } return 0; }