练习题GRYZ2015 足球联赛(重庆一中高2018级信息学竞赛测验4) 解题报告
来源:互联网 发布:网络黑客的行为 编辑:程序博客网 时间:2024/05/02 00:07
【问题描述】
XX中学新一季的足球联赛开幕了。足球联赛有 n只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得 3 分,输一场不得分,平局两只队伍各得一分。
英勇无畏的小鸿是机房的主力前锋,她总能在关键时刻踢出一些匪夷所思的妙球。但是很可惜,她过早的燃烧完了她的职业生涯,不过作为一个能够 Burning 的 girl,她的能力不止如此,她还能预测这个赛季所有球队的比赛结果。
虽然她能准确预测所有比赛的结果,但是其实她不怎么厉害,Mr.Gao 上数学课时她总是在 sleep,因此她的脑里只有整数没有实数,而且,她只会 10 以内非负整数的加法运算,因此她只有结果却无法知道谁会获得联赛的冠军。
小鸿想给冠军队伍的所有队员一个拥抱,所以她把计算结果的任务交给了你:现在,给你一个 n*n 的矩阵表示比赛情况。第 i 行第 j 列的字母表示在第 i 只队伍在主场迎战第 j 只队伍的比赛情况,W 表示主队赢,L 表示主队输,D 表示平局。现在需要你给出最后能得到小鸿拥抱的队伍编号,如有多支队伍分数最高,按字典序输出编号。
【输入格式】
第一行一个整数 n。
接下来 n 行,每行 n 个字符,表示输赢情况。第 i 行第 i 列为 - ,因为一只队伍不可能与自己比赛。
【输出格式】
输出得分最高的队伍编号。如有多个在一行中输出,用一个空格分开。
【输入输出样例1】
football.in
3
-WW
W-W
football.in
5
-DWWD
L-WLL
DD-WD
DDL-L
DDLL-
football.out
对于 40%的数据,满足 N<=20
XX中学新一季的足球联赛开幕了。足球联赛有 n只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得 3 分,输一场不得分,平局两只队伍各得一分。
英勇无畏的小鸿是机房的主力前锋,她总能在关键时刻踢出一些匪夷所思的妙球。但是很可惜,她过早的燃烧完了她的职业生涯,不过作为一个能够 Burning 的 girl,她的能力不止如此,她还能预测这个赛季所有球队的比赛结果。
虽然她能准确预测所有比赛的结果,但是其实她不怎么厉害,Mr.Gao 上数学课时她总是在 sleep,因此她的脑里只有整数没有实数,而且,她只会 10 以内非负整数的加法运算,因此她只有结果却无法知道谁会获得联赛的冠军。
小鸿想给冠军队伍的所有队员一个拥抱,所以她把计算结果的任务交给了你:现在,给你一个 n*n 的矩阵表示比赛情况。第 i 行第 j 列的字母表示在第 i 只队伍在主场迎战第 j 只队伍的比赛情况,W 表示主队赢,L 表示主队输,D 表示平局。现在需要你给出最后能得到小鸿拥抱的队伍编号,如有多支队伍分数最高,按字典序输出编号。
【输入格式】
第一行一个整数 n。
接下来 n 行,每行 n 个字符,表示输赢情况。第 i 行第 i 列为 - ,因为一只队伍不可能与自己比赛。
【输出格式】
输出得分最高的队伍编号。如有多个在一行中输出,用一个空格分开。
【输入输出样例1】
football.in
3
-WW
W-W
WW-
football.out
1 2 3
football.in
5
-DWWD
L-WLL
DD-WD
DDL-L
DDLL-
football.out
1
对于 40%的数据,满足 N<=20
对于 100%的数据,满足 N<=50
做题思路(正解):本题比较简单,直接循环枚举每场比赛,若主队胜,则主队加3分;若平局,则主客队各加1分;若主队败,则客队加3分。最后按每支球队的总分由大到小排序(总分相同,按编号由小到大排序),需要注意的是,可能最高分的球队不止一支,排序后先记录最高分,然后枚举每支球队的得分,当该球队得分小于最高分时,跳出循环。
#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn=55;int N;char s[maxn][maxn];struct data{int sum,id;};data a[maxn];bool cmp(data aa,data bb){if(aa.sum!=bb.sum) return aa.sum>bb.sum;else return aa.id<bb.id; //得分相同时,按编号由小到大(字典序)排序 }int main(){freopen("football.in","r",stdin);freopen("football.out","w",stdout);scanf("%d",&N);for(int i=1;i<=N;i++)scanf("%s",s[i]);memset(a,0,sizeof(a));for(int i=1;i<=N;i++)for(int j=0;j<N;j++) //计算每支球队的得分 {if(s[i][j]=='W') a[i].sum+=3;if(s[i][j]=='D') {a[i].sum++;a[j+1].sum++;}if(s[i][j]=='L') a[j+1].sum+=3;}for(int i=1;i<=N;i++)a[i].id=i;sort(a+1,a+1+N,cmp); //按球队的得分由大到小排序 int k=a[1].sum;for(int i=1;i<=N;i++) //查找是否有多支得分最高的队伍 if(a[i].sum==k) printf("%d ",a[i].id);else break;return 0;}考后反思:看题时一定要细心,比如这道题,每两支球队间会有两场比赛,考试之前在题库上做的时候,算成了每两支球队间只有一场比赛,结果纠结了大半天。。。
0 0
- 练习题GRYZ2015 足球联赛(重庆一中高2018级信息学竞赛测验4) 解题报告
- 练习题 旅行(重庆一中高2018级信息学竞赛测验4) 解题报告
- 【动态规划练习题】 学生宿舍(重庆一中高2018级信息学竞赛测验10) 解题报告
- POJ3045 牛的杂技(重庆一中高2018级信息学竞赛测验4) 解题报告
- 分治算法练习题 病毒分裂(重庆一中高2018级信息学竞赛测验6) 解题报告
- UVA1615 高速公路(highway)(重庆一中高2018级信息学竞赛测验5) 解题报告
- RQNOJ190 拦截匪徒 (重庆一中高2018级信息学竞赛测验2) 解题报告
- UVA815 洪水(重庆一中高2018级信息学竞赛测验3) 解题报告
- POJ3069 萨鲁曼的大军(重庆一中高2018级信息学竞赛测验3) 解题报告
- POJ3622 挑剔的美食家(重庆一中高2018级信息学竞赛测验5) 解题报告
- vijos1060 盒子(重庆一中高2018级信息学竞赛测验7) 解题报告
- vijos1037 搭建双塔(重庆一中高2018级信息学竞赛测验7) 解题报告
- vijos1488 路灯改建计划(重庆一中高2018级信息学竞赛测验9) 解题报告
- Codevs4175 收费站(重庆一中高2018级信息学竞赛测验9) 解题报告
- NOIP2011普及组 瑞士轮(重庆一中高2018级信息学竞赛测验4) 解题报告
- USACO2.4.2 穿越栅栏(简单版本) (重庆一中高2018级信息学竞赛测验2) 解题报告
- UVA1625 颜色的长度(color length)(重庆一中高2018级信息学竞赛测验10) 解题报告
- USACO 月赛 劣质的草 (重庆一中高2018级信息学竞赛测验2) 解题报告
- ThinkSNS中判断访问请求请求来源是否为手机的方法
- Web.xml配置详解
- 7.22BFS&DFS训练计划
- 2016.07.21【初中部 NOIP提高组 】模拟赛C
- UIToolbar
- 练习题GRYZ2015 足球联赛(重庆一中高2018级信息学竞赛测验4) 解题报告
- 浅谈原生javascript的select操作
- HTML CSS特殊字符总结
- 奶牛的锻炼...dp
- 100天土鸡饲养计划(6)
- Longge的问题(容斥原理 && 欧拉函数)
- Hash表实现
- jvm常用命令
- 错误提示为: Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"