题目大意:
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"
求各位神犇点赞
首先介绍一下函数:
string search(string s,int l){
string kk;
int spacesum=0;
for(register int i=l;s[i]!=' '&&i
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
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<
华丽丽地结束
tips:如果有认识我的人可以看一下wss函数返回的乱码,可以断句读一下貌似跑题了(逃