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);
}
View Code

相关文章: