「Poetize7」足球比赛

描述 Description

SJZEZ和TSYZ正在进行一轮足球联谊赛,根据规则,这轮比赛有两场,一场在SJZEZ的主场进行,一场在TSYZ的主场进行。胜负判断标准如下:
1.在两场比赛中进球总数较多的一方赢得比赛。
2.如果双方进球总数相同,在对方主场进球更多的一方赢得比赛。
3.如果1、2都相同,胜利者将会随机产生= =
双方已经进行了一场比赛,作为SJZEZ的队长,忘川沧月童鞋想知道:
(1)第二场sjzez最少需要进多少球,才有可能赢得比赛。
(2)第二场sjzez进不超过多少个球,tsyz才有可能赢得比赛。
已知在一场比赛中,一方的进球数不可能多于30个。

输入格式 InputFormat

第一行一个整数t,表示该测试点中数据的组数。
接下来t行,每行一个字符串,描述该组数据中第一场比赛的情况,形式如下:
wccy's team played where game, scored x goals, and conceded y goals.
其中where是'home'或者'away'中的一个,home表示第一场比赛是在sjzez的主场进行,away表示第一场比赛是在tsyz的主场进行。
x,y是整数,分别表示忘川沧月的队伍的进球数,和对方的进球数。

题解:

无脑题。。。

出题人:

考察:枚举验证 / 贪心

方法一:直接枚举所有可能情况,判断是否符合条件,取极限情况为答案。

方法二:贪心。直接计算。

两种方法都能AC,实际上本题只要读懂了题目就是送分题。读入稍微注意下。

代码:(不想写代码了。。。)

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int a,b,c,d,x,y,t;
 7 char pos[10];
 8 int main()
 9 {
10  scanf("%d
",&t);
11  while(t--)
12  {
13   scanf("%*s%*s%*s");
14   scanf("%s",pos);
15   scanf("%*s%*s");
16   scanf("%d",&x);
17   scanf("%*s%*s%*s");
18   scanf("%d",&y);
19   scanf("%*s");
20   if(pos[0]=='h')
21   {
22    a=x,b=y,d=0;
23    c=b+d-a;
24    if(c<b) c++;
25    c=max(c,0);
26    printf("%d ",c);
27    d=30; c=b+d-a;
28    if(c>b) c--;
29    c=max(min(c,30),0);
30    printf("%d
",c);
31   }
32   else
33   {
34    c=x,d=y; b=0;
35    a=max(b+d-c,0);
36    printf("%d ",a);
37    b=30;
38    a=max(min(b+d-c,30),0);
39    printf("%d
",a);
40   }
41  }
42  return 0;
43 }
View Code
原文地址:https://www.cnblogs.com/zyfzyf/p/4048061.html