Yurchiu's Blog

P1580 yyy loves Easter_Egg I

Yurchiu 2019-11-15, 21:06:44 605 隐藏左右两栏 展示左右两栏

字符串模拟题

题意

队形的定义为:只要这一句内含有且恰好含有一次 @,@ 的人和上一句话一样就算为队形。

若艾特的人与第一个人不同,就算队形被打破。

  • 若这个人在队形被打破之前出来吱声了,或者就是他打破队形了,就算(油)炸成功了。若(油)炸成功,输出 Successful @某某某 attempt
  • 若队形被破坏先输出 Unsuccessful @某某某 attempt1,再输出队形第一次被破坏的行数与第一次破坏队形的人的 id。
  • 如果队形一直没被打破,就先输出 Unsuccessful @某某某 attempt,再输出队形的长度,最后输出 Good Queue Shape

代码附赠注释。

#include<bits/stdc++.h>
using namespace std;

int queuelen=1,flag=0; 
string atname,ptmp,tmp,nowname;

/*

queuelen 队列长度
flag 标记,当前的人是否@了一个人
atname 被轰炸的人
ptmp 上一个输入的字符串
tmp 当前字符串
nowname 当前说话的人

*/

void unsu(bool kind)//轰炸失败,分2种情况
{
	cout<<"Unsuccessful @yyy loves "<<atname<<" attempt"<<endl;
	cout<<queuelen<<endl;
	if(kind)
		cout<<"yyy loves "<<nowname<<endl;
	else
		cout<<"Good Queue Shape";
	exit(0);//直接return 0;
} 

void su()//轰炸成功
{
	cout<<"Successful @yyy loves "<<atname<<" attempt"<<endl;
	exit(0);
}

int main()
{

//*****初始化

	cin>>tmp>>tmp>>nowname>>tmp;//保证大家的名字都是yyy loves ____ 的格式
		
	while(cin>>tmp)
	{
		if(tmp[0]=='@')//保证第一个说话的一定艾特了一个人且只@了一个人
		{
			cin>>tmp>>atname;//获取被轰炸人
			break;
		}	
	}
    
//*****
			
	while(cin>>tmp)
	{
		if(tmp==":")//说话了
		{
			if(ptmp==atname)//此时ptmp存储他的名字
				su();//轰炸成功
                
			if(flag)//上一个人没@人,破坏队形
				unsu(1);
                
			nowname=ptmp,queuelen++,flag=1;//存储当前的人,队列长度++,当前的人还没@人
		}
		
		if(tmp[0]=='@'&&flag==0)//艾特人数不为一个人视为破坏队形
			unsu(1);
			
		if(tmp[0]=='@')//@人
		{
			flag=0;//他@人了
			cin>>tmp>>tmp;
			if(tmp!=atname)//@别人,破坏队形
				unsu(1);
		}
		ptmp=tmp;//上一个字符串
	} 
	
	if(flag)//最后一个人没@人,破坏队形
		unsu(1);

	unsu(0);//没轰炸成功
	return 0;
}

欢迎 hack!\color{red}{\texttt{hack!}}





本文作者:Yurchiu

本文链接:https://yz-hs.github.io/70156992a3e9/

版权声明:本博客中所有原创文章除特别声明外,均允许规范转载,转载请注明出处。所有非原创文章,按照原作者要求转载。


By Yurchiu.
其他物件杂物收纳
Hitokoto

Yurchiu 说,除了她以外的人都很强!嘤嘤嘤~~
博客信息
文章数目
158
最近更新
08-21
本站字数
350.6k