yyy loves Easter_Egg I(恶心的字符串模拟)

Posted ztz11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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");
}

 

以上是关于yyy loves Easter_Egg I(恶心的字符串模拟)的主要内容,如果未能解决你的问题,请参考以下文章

[P1580] yyy loves Easter_Egg I

[洛谷P1580]yyy loves Easter_Egg I

$题解 P2394 yyy loves Chemistry I$

P2394-yyy loves Chemistry I

P2393-yyy loves Maths II

Luogu P2397 yyy loves Maths VI (mode)