UESTC OJ 25

Input

输入包含多组数据。每组数据的第一行包含一个整数N(1≤N≤18),表示双方总共罚了多少个点球,N=0表示输入结束。随后有N行,每行是一个如下形式的字符串:

XXXX good:表示这个点球罚进

或者XXXX no good:表示这个点球没有罚进

其中XXXX表示球员名字(全部由字母和空格组成,保证不会出现歧义)

每一行保证不超过100个字符。

XXXXgood以及XXXXnonogood之间保证有且只有1个空格。

goodno good都是小写。本题是大小写相关的。

数据不保证点球大战一定结束,也不保证在结束以后立即结束这组数据(即:不用判断点球大战是否结束,只用把罚进的点球往比分上加即可)。

Output

对每组数据,输出一个比分板。一个点球如果罚进,则在对应的地方标上O,如果没有进则标上X。先罚球的队伍的信息在上面,后罚的在下面。最右边标上两队的比分。具体格式参考样例输出。注意如果一轮点球只罚了一个,则后面那个点球对应的地方写上-

解决思路

这个题解决思路倒是很简单,主要要多考虑两个因素

(1)如果一个人名最后两位为no,例如abcno good,则应该

(2)如果一个人名中包括no good,例如 abc no good good,则应该是点球罚进。

因此解决思路是判断输入长度是否大于8,小于8肯定是进了,大于8则取字符串最后8个字符的子串与" no good"进行比较,若相等则点球未罚进,否则该点球罚进。

代码如下:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int testCases, lines, firstTeamGoal, secondTeamGoal;
    string goalInfo, firstTeam, secondTeam;
    cin >> testCases;

    while (testCases != 0){
        lines = 0;
        firstTeam = secondTeam = "";
        firstTeamGoal = secondTeamGoal = 0;

        getline(cin, goalInfo);

        while (lines < testCases){

            getline(cin, goalInfo);
            int len = goalInfo.size();

            if (len >= 8){
                if (goalInfo.substr(len - 8, 8) == " no good"){
                    if (lines % 2 == 0)
                        firstTeam += "X ";
                    else
                        secondTeam += "X ";
                }
                else{
                    if (lines % 2 == 0){
                        firstTeamGoal++;
                        firstTeam += "O ";
                    }
                    else{
                        secondTeamGoal++;
                        secondTeam += "O ";
                    }
                }
            }
            else{
                if (lines % 2 == 0){
                    firstTeamGoal++;
                    firstTeam += "O ";
                }
                else{
                    secondTeamGoal++;
                    secondTeam += "O ";
                }
            }
            lines++;
        }
        if (testCases % 2 == 1)
            secondTeam += "- ";

        for (int i = 0, len = (testCases + 1) / 2; i < len; i++)
            cout << i+1 << " ";
        cout << "Score" << endl << firstTeam << firstTeamGoal << endl << secondTeam <<secondTeamGoal<< endl;
        cin >> testCases;
    }
}

UESTC OJ 25

时间: 2024-08-05 11:20:50

UESTC OJ 25的相关文章

uestc oj 1217 The Battle of Chibi (dp + 离散化 + 树状数组)

题目链接:http://acm.uestc.edu.cn/#/problem/show/1217 给你一个长为n的数组,问你有多少个长度严格为m的上升子序列. dp[i][j]表示以a[i]结尾长为j的上升子序列个数.常规是三个for. 这里用树状数组优化一下,类似前缀和的处理,两个for就好了. 1 //#pragma comment(linker, "/STACK:102400000, 102400000") 2 #include <algorithm> 3 #incl

[dp][uestc oj][最长上升子序列] LIS N - 导弹拦截

N - 导弹拦截 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都要高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹,同时,司令部想知道拦截下来的导

[dp][uestc oj]J - 男神的约会

J - 男神的约会 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 有一天男神约了学姐姐去看电影,电影院有一个活动,给你一个10*10的矩阵,每一个格子上都有一个0-9的整数,表示一共十种优惠券中的一种. 观众从左上角的格子开始走,走到右下角.每走到一个有着a号优惠券的格子,都必须要玩一个a分钟的游戏来领取这张优惠券. 每次只能向右或向下走.当走到右

[uestc oj]H - 邱老师选妹子

H - 邱老师选妹子 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 邱老师长得帅这是人尽皆知,于是追他的妹子就会很多. 但是你知道,邱老师是一个很专一的人,所以他心里面只能有一个人. 于是他决定从追他的众多妹子里挑选一个出来.于是酱神给邱老师出来一个主意,已知有一些妹子,恰好可以给她们从l到r排号,使得每一个妹子有单独的数字,而正好有r-l+1个妹

PAT 1037

蛋疼题目系列 把正数和负数都排一遍序,然后就ok了 1 #include <vector> 2 #include <iostream> 3 #include <string> 4 #include <fstream> 5 #include <queue> 6 #include <algorithm> 7 8 using namespace std; 9 10 struct ComLarge{ 11 bool operator()(co

读者的梦想,图书馆员的梦魇

作者:鱼鸟兽 链接:https://zhuanlan.zhihu.com/p/21602568 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 一本无法被数字化的书 <S.>包含了两个世界:印刷的世界和书写的世界.在印刷的世界,也就是由旧书<忒修斯之船>及其所构成的故事里,充满了各种谜题:失忆的主角.被禁言的船员.神秘的女子,还有故事的创作者--作家石察卡和他的译注者柯岱拉.所有的元素之间有什么联系?<忒修斯之船>并没有给我们答案. 珍

杭电OJ 2017 2014年9月25日21:05:42

字符串统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41389    Accepted Submission(s): 23096 Problem Description 对于给定的一个字符串,统计其中数字字符出现的次数. Input 输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成

杭电OJ 2016 2014年9月25日20:19:15

数据的交换输出 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 55551    Accepted Submission(s): 21128 Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数. Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实

杭电OJ 2015 2014年9月25日19:51:03

偶数求和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 46061    Accepted Submission(s): 20130 Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值.编程输出