1 条题解

  • 0
    @ 2025-8-24 21:26:43

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar ironwheel
    **

    搬运于2025-08-24 21:26:42,当前版本为作者最后更新于2018-02-18 11:28:51,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    求各位神犇点赞


    首先介绍一下函数:

    string search(string s,int l){
        string kk;
        int spacesum=0;
        for(register int i=l;s[i]!=' '&&i<s.size();i++){
            if(s[i]==' ') spacesum++;
            if(spacesum==3||s[i]==13) break;
            kk+=s[i];
        }
        return kk;
    }
    

    search函数:找到l位置以后的名字(yyy loves____)

    返回一个名字,原理不多说

    注意如果发现第二个点WA且有以下这种操作:

    On line 1 column 35, read att, expected atte. 得分0

    那你一定就是没有特判换行符了!!!

    没错,就是spacesum那玩意儿

    再次膜拜一下讨论区里的@treasure 大佬

    string find_name(string s){
        string a=search(s,10);
        return a;
    }
    

    find_name函数:寻找发消息的人的名字(同上)

    其实就是调用search函数,利用名字一定是yyy loves XXX

    int kkk(string q){
        int sum=0,gg;
        for(register int i=0;i<q.size();i++){
            if(q[i]=='@'){sum++;gg=i;}
        }
        if(sum!=1)return 0;
        else return gg;
    }
    

    kkk函数:(逃

    原理:扫一遍寻找一句话中@的个数

    以及@的位置(方便search)

    如@的个数不为1则返回0,否则返回@的位置

    string wss(string s){
        int g=kkk(s);
        if(g!=0)return search(s,g+11);
        else return "tenyearsatreehundredyearsatreeman";
    }
    

    wss函数:

    原理:调用kkk函数,搜索被@的人的名字;

    若@的人数不为1个,直接返回一段乱码(逃

    然后就是主程序:

    不停输入,判断空行(保证文件结束一定有一行空行 方便你判定文件结束)

    如果跳出来的人(find_name(a))和@的人一样,炸成功,直接结束

    否则如果被@的人(wss(a))与第一个人@的人不一样(包括不@或@了多人),破坏队形,返回

    如果输入结束,没有停止运行,退出了:队形没有被破坏,输出

    int main(){
        getline(cin,a);
        mega=wss(a);
        while(++jl){
            getline(cin,a);
            if(a.size()==1)break;
            //cout<<wss(a)<<' '<<mega<<' '<<"\n";
            if(find_name(a)==mega){
                cout<<"Successful @yyy loves "<<mega<<" attempt";
                return 0;
            }//轰炸成功
            else if(wss(a)!=mega){
                cout<<"Unsuccessful @yyy loves "<<mega<<" attempt"<<endl;
                cout<<jl+1<<endl;
                cout<<"yyy loves "<<find_name(a)<<endl;
                return 0;
            }//队形被破坏
        }
        cout<<"Unsuccessful @yyy loves "<<mega<<" attempt\n";
        cout<<jl<<"\n";
        cout<<"Good Queue Shape";//队形保持
    }
    

    华丽丽地结束

    tips:如果有认识我的人可以看一下wss函数返回的乱码,可以断句读一下貌似跑题了(逃

    • 1

    信息

    ID
    573
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者