zoukankan      html  css  js  c++  java
  • yyy loves Easter_Egg I(恶心的字符串模拟)

    题目背景

    Soha的出题效率着实让人大吃一惊。OI,数学,化学的题目都出好了,物理的题还没有一道。于是,Huntfire,absi2011,redbag对soha进行轮番炸,准备炸到soha出来,不料,人群中冲出了个kkksc03……

    题目描述

    yyy loves OI(Huntfire),yyy loves Maths(redbag),yyy loves Chemistry(absi2011)对yyy loves Physics(soha)进行轮番炸,轰炸按照顺序进行,顺序为Huntfire,redbag,absi2011。

    现在这一题中吗,我们不考虑太复杂的队形形式。我们认为只要这一句内含有且恰好含有一次@,@的人和上一句话一样就算为队形。

    比如以下也视为队形

    yyy loves OI : @yyy loves Microelectronic

    yyy loves Maths : @yyy loves Microelectronic 我佩服soha的出题效率

    yyy loves OI : @yyy loves Microelectronic +1

    yyy loves Chemistry : +1 @yyy loves Microelectronic

    若艾特的人与第一个人不同,就算队形被打破。若这个人在队形被打破之前出来吱声了,或者就是他打破队形了,就算(油)炸成功了。若(油)炸成功,输出“Successful @某某某 attempt”,若队形被破坏先输出“Unsuccessful @某某某 attempt”,再输出队形第一次被破坏的行数与第一次破坏队形的人的id。如果队形一直没被打破,就先输出“Unsuccessful @某某某 attempt”,再输出队形的长度,最后输出"Good Queue Shape"/* yyy loves Microelectronic 是kkksc03*/

    输入输出格式

    输入格式:

    N行,为轰炸开始后的一段消息记录,每行一条消息。消息格式:“消息发送者 + ‘ : ’+消息内容”,每行消息长度不超过1000。(中文用拼音代替了)

    输出格式:

    若(油)炸成功,输出“Successful @某某某 attempt”,若队形被破坏第一行输出“Unsuccessful @某某某 attempt”,接下来一行输出队形第一次被破坏的行数,第三行输出第一次破坏队形的人的id,如果队形一直没被打破,就先输出“Unsuccessful @某某某 attempt”,再输出队形的长度,最后输出"Good Queue Shape"

    思路:

    恶心到吐

    数据还是在windows下出的

    换行符是

    坑死我了

    按题意模拟即可

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <bitset>
    #include <queue>
    #include <cstdlib>
    #include <algorithm>
    #define rii register int i
    #define rij register int j
    using namespace std;
    char zha[1005],name[1005],xl[1005],at[1005];
    int lzha,lname,lxl;
    int bnt;
    int main()
    {
        // freopen("k.in","r",stdin);
        char c;
        while(1)
        {
            lname=0;
            bnt++;
            lxl=0;
            int wz;
            while(~scanf("%c",&c))
            {
                if(c==10||c==13)
                {
                    scanf("
    ");
                    break;
                }
                lxl++;
                xl[lxl]=c;
            }
            int kkk=0;
            for(rii=1;i<=lxl;i++)
            {
                if(xl[i]=='@')
                {
                    kkk++;
                }
            }
            if(lxl==0)
            {
                break;
            }
            for(rii=1;i<=lxl;i++)
            {
                if(xl[i]==':')
                {
                    wz=i+2;
                    break;
                }
                lname++;
                name[lname]=xl[i];
            }
            if(bnt!=1)
            {
                if(lzha+1==lname)
                {
                    int dp=0;
                    for(rii=1;i<=lzha;i++)
                    {
                        if(zha[i]!=name[i])
                        {
                            dp=1;
                            break;
                        }
                    }
                    if(dp==0)
                    {
                        cout<<"Successful @";
                        for(rii=1;i<=lname;i++)
                        {
                            putchar(name[i]);
                        }
                        cout<<"attempt";
                        return 0;
                    }
                }
            }
            int lat=0,pd=0,cnt=0;
            for(rii=wz;i<=lxl;i++)
            {
                if(xl[i]=='@')
                {
                    pd=1;
                    continue;
                }
                if((xl[i]==' '||xl[i]==13)&&pd==1)
                {
                    cnt++;
                }
                if(cnt>=3)
                {
                    wz=i+1;
                    if(xl[i]==13)
                    {
                        wz++;
                    }
                    break;
                }
                if(pd==1)
                {
                    lat++;
                    at[lat]=xl[i];
                }
            }
            if((lat!=lzha||pd==0||kkk>1)&&bnt!=1)
            {
                cout<<"Unsuccessful @";
                for(rii=1;i<=lzha;i++)
                {
                    putchar(zha[i]);
                }
                putchar(' ');
                cout<<"attempt";
                puts("");
                cout<<bnt<<endl; 
                for(rii=1;i<=lname;i++)
                {
                    putchar(name[i]);
                }
                return 0;
            }
            if(lat==lzha&&bnt!=1)
            {
                for(rii=1;i<=lat;i++)
                {
                    if(at[i]!=zha[i])
                    {
                        cout<<"Unsuccessful @";
                        for(rii=1;i<=lzha;i++)
                        {
                        putchar(zha[i]);
                        }
                        putchar(' ');
                        cout<<"attempt";
                        puts("");
                        cout<<bnt<<endl; 
                        for(rii=1;i<=lname-1;i++)
                        {
                            putchar(name[i]);
                        }
                        return 0;
                    }
                }
            }
            if(bnt==1)
            {
                lzha=lat;
                for(rii=1;i<=lat;i++)
                {
                    zha[i]=at[i];
                }
            }
        }
        // puts("kkk");
        bnt--;
        cout<<"Unsuccessful @";
        for(rii=1;i<=lzha;i++)
        {
            putchar(zha[i]);
        }
        puts(" attempt");
        cout<<bnt<<endl; 
        puts("Good Queue Shape");
    }
  • 相关阅读:
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    综合练习:词频统计
    【Art】虹吸原理(5月份订正版)
    【失踪人口】准初三的JZSC
    【Mood】出大问题(最近很喜欢说这句话)
    【Matrix】矩阵加法&乘法
    【C++】stdio.h和cstdio
    【Theorem】中国剩余定理
  • 原文地址:https://www.cnblogs.com/ztz11/p/9917787.html
Copyright © 2011-2022 走看看