描述 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\n",&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\n",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\n",a); 40 } 41 } 42 return 0; 43 }
时间: 2024-10-15 09:40:42