T1 足球联赛
题目
【题目描述】
巴蜀中学新一季的足球联赛开幕了。足球联赛有n只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得3分,输一场不得分,平局两只队伍各得一分。
英勇无畏的小鸿是机房的主力前锋,她总能在关键时刻踢出一些匪夷所思的妙球。但是很可惜,她过早的燃烧完了她的职业生涯,不过作为一个能够Burning的girl,
她的能力不止如此,她还能预测这个赛季所有球队的比赛结果。虽然她能准确预测所有比赛的结果,但是其实她不怎么厉害,Mr.Gao上数学课时她总是在sleep,因此她的脑里只有整数没有实数,
而且,她只会10以内非负整数的加法运算,因此她只有结果却无法知道谁会获得联赛的冠军。
小鸿想给冠军队伍的所有队员一个拥抱,所以她把计算结果的任务交给了你:
现在,给你一个 n*n 的矩阵表示比赛情况。第 i 行第 j 列的字母表示在第 i 只队伍在主场迎战第j只队伍的比赛情况,W 表示主队赢,L 表示主队输,D 表示平局。
现在需要你给出最后能得到小鸿拥抱的队伍编号,如有多支队伍分数最高,按字典序输出编号。
【输入格式】
第一行一个整数 n。
接下来 n 行,每行 n 个字符,表示输赢情况。
第 i 行第 i 列为 - ,因为一只队伍不可能与自己比赛。
【输出格式】
输出得分最高的队伍编号。如有多个在一行中输出,用一个空格分开。
【输入样例】
3
-WW
W-W
WW-
【输出样例】
1 2 3
【数据规模】
对于40%的数据,满足N<=20
对于100%的数据,满足N<=50
解析
纯模拟题,直接模拟就行了,没什么好说的,就是输出时要记得判断最高成绩相同的都要输出。
Code
#include <algorithm> #include <iostream> #include <cstring> #include <string> #include <cstdio> #include <cmath> using namespace std; int read() { int num=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') w=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { num=(num<<1)+(num<<3)+ch-'0'; ch=getchar(); } return num*w; } int n,ans[51],maxn,temp,ra[51]; char s; int main() { //freopen("soccer.in","r",stdin); //freopen("soccer.out","w",stdout); n=read(); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { cin>>s; if(s=='W') ans[i]+=3; else if(s=='L') ans[j]+=3; else if(s=='D') { ans[i]+=1; ans[j]+=1; } } for(int i=1;i<=n;i++) if(ans[i]>maxn) { maxn=ans[i]; temp=1; ra[temp]=i; } else if(ans[i]==maxn) ra[++temp]=i; for(int i=1;i<=temp;i++) cout<<ra[i]<<" "; return 0; //fclose(stdin); //fclose(stdout); }