NC21717. 送气球.jpg
描述
输入描述
第一行包含一个整数T(),表示总共有T组测试样例;
第二行输入一个整数n,m;
n表示有多少个队伍参加这次的比赛();
m表示有多少条提交记录();
接下来输入m行,每行输入格式如下:
team_id problem_id submit_status
team_id 代表着队伍的编号(1 <= team_id <= n);problem_id代表着题目编号(为A~M的大写字母);submit_status代表着这个题目提交的结果(可能是"AC","PE","TLE","MLE","WA","RE","CE"其中的一种)。
hint:每次提交只有提交结果是"AC"的题目才可以得到气球。如果一个队伍如果通过同一个题目多次,他也只能获得一个气球。
输出描述
对于每组样例
第一行输出一行“Case #x:”,x表示当前为第几组样例(详细见样例);
第二行输出n个数(每两个数之间用空格隔开)代表着第 i 个队可以获得的气球数量。(注意不要在每一行的末尾输出多余的空格)。
示例1
输入:
1 5 10 1 A WA 1 A AC 2 A AC 3 C TLE 2 C TLE 1 C AC 3 A AC 4 A AC 1 A AC 5 A WA
输出:
Case #1: 2 1 1 1 0
C(clang 3.9) 解法, 执行用时: 5ms, 内存消耗: 384K, 提交时间: 2018-12-25 13:03:16
#include<stdio.h> #include<string.h> int main() { int k,i,j,m,n,t,l; scanf("%d",&k); for(l=1;l<=k;l++) { int w[100][50]={0}; scanf("%d %d",&n,&m); for(i=0;i<m;i++) { int id; char s,ss[10]; scanf("%d %c %s",&id,&s,&ss); if(strcmp(ss,"AC")==0) w[id][s-'A']=1; } printf("Case #%d:\n",l); for(i=1;i<=n;i++) { int sum=0; t=50; while(t--) sum+=w[i][50-t-1]; printf("%d ",sum); } printf("\n"); } return 0; }
Python3(3.5.2) 解法, 执行用时: 59ms, 内存消耗: 3684K, 提交时间: 2018-12-23 12:25:35
t=int(input()) for j in range(t): n,m=[int(x)for x in input().split()] l=[0 for i in range(n)] p=[[]for i in range(n)] for i in range(m): a,b,c=input().split() if c=='AC' and b not in p[int(a)-1]: p[int(a)-1].append(b) l[int(a)-1]+=1 print("Case #%d:"%(j+1)) for i in range(n): if i!=n-1: print(l[i],end=' ') else: print(l[i])
C++14(g++5.4) 解法, 执行用时: 9ms, 内存消耗: 620K, 提交时间: 2019-10-07 21:55:43
#include<bits/stdc++.h> using namespace std; map<string,int>ma[1000]; int main(){ int T;cin >> T; int cas = 1; while(T--){ for(int i = 1;i <= 1000;i++) ma[i].clear(); printf("Case #%d:\n",cas++); int n,m; cin >> n >> m; for(int i = 1;i <= m;i++){ int a;string b,c; cin >> a >> b >> c; if(c == "AC") ma[a][b] = 1; } for(int i = 1;i <= n;i++){ printf("%d%c",ma[i].size(),i == n ? '\n':' '); } } }
C++11(clang++ 3.9) 解法, 执行用时: 7ms, 内存消耗: 504K, 提交时间: 2020-02-27 14:36:38
#include<iostream> #include<string> using namespace std; int main() { int t,n,m,q=1; cin>>t; while(t--) { int i,a[100][26]={0},b[100]={0}; char c; cin>>n>>m; string s; while(m--) { cin>>i>>c>>s; if(s=="AC"&&a[i][c-'A']==0) { a[i][c-'A']=1; b[i]++; } } cout<<"Case #"<<q<<":"<<endl; q++; for(i=1;i<=n-1;i++) cout<<b[i]<<" "; cout<<b[i]<<endl; } return 0; }
pypy3 解法, 执行用时: 110ms, 内存消耗: 25256K, 提交时间: 2021-07-17 17:08:18
for _ in range(int(input())): data = {} n,m=map(int,input().split(' ')) for i in range(1,n+1): data[str(i)]=[] for i in range(m): t,tm,re=input().split(' ') if re == "AC" and tm not in data[t]: data[t].append(tm) print(f'Case #{_+1}:') for key in data: print(len(data[key]),end=' ') print()