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下出的
换行符是\r\n
坑死我了
按题意模拟即可
代码:
#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[],name[],xl[],at[];
int lzha,lname,lxl;
int bnt;
int main()
{
// freopen("k.in","r",stdin);
char c;
while()
{
lname=;
bnt++;
lxl=;
int wz;
while(~scanf("%c",&c))
{
if(c==||c==)
{
scanf("\n");
break;
}
lxl++;
xl[lxl]=c;
}
int kkk=;
for(rii=;i<=lxl;i++)
{
if(xl[i]=='@')
{
kkk++;
}
}
if(lxl==)
{
break;
}
for(rii=;i<=lxl;i++)
{
if(xl[i]==':')
{
wz=i+;
break;
}
lname++;
name[lname]=xl[i];
}
if(bnt!=)
{
if(lzha+==lname)
{
int dp=;
for(rii=;i<=lzha;i++)
{
if(zha[i]!=name[i])
{
dp=;
break;
}
}
if(dp==)
{
cout<<"Successful @";
for(rii=;i<=lname;i++)
{
putchar(name[i]);
}
cout<<"attempt";
return ;
}
}
}
int lat=,pd=,cnt=;
for(rii=wz;i<=lxl;i++)
{
if(xl[i]=='@')
{
pd=;
continue;
}
if((xl[i]==' '||xl[i]==)&&pd==)
{
cnt++;
}
if(cnt>=)
{
wz=i+;
if(xl[i]==)
{
wz++;
}
break;
}
if(pd==)
{
lat++;
at[lat]=xl[i];
}
}
if((lat!=lzha||pd==||kkk>)&&bnt!=)
{
cout<<"Unsuccessful @";
for(rii=;i<=lzha;i++)
{
putchar(zha[i]);
}
putchar(' ');
cout<<"attempt";
puts("");
cout<<bnt<<endl;
for(rii=;i<=lname;i++)
{
putchar(name[i]);
}
return ;
}
if(lat==lzha&&bnt!=)
{
for(rii=;i<=lat;i++)
{
if(at[i]!=zha[i])
{
cout<<"Unsuccessful @";
for(rii=;i<=lzha;i++)
{
putchar(zha[i]);
}
putchar(' ');
cout<<"attempt";
puts("");
cout<<bnt<<endl;
for(rii=;i<=lname-;i++)
{
putchar(name[i]);
}
return ;
}
}
}
if(bnt==)
{
lzha=lat;
for(rii=;i<=lat;i++)
{
zha[i]=at[i];
}
}
}
// puts("kkk");
bnt--;
cout<<"Unsuccessful @";
for(rii=;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 题解: 队列+字符串 #include <cstdio> #include <string> #include ...
- 【洛谷1580】yyy loves Easter_Egg I(字符串处理题)
点此看题面 大致题意: 略.(一道模拟题,自己去看题面吧) 几个字符数组函数 纯粹是一道字符串处理题,就当是学了一下各种与字符数组相关的函数吧! \(gets()\):这个是比较常用的函数,就是读入一 ...
- [洛谷1580]yyy loves Easter_Egg I
题目背景 Soha的出题效率着实让人大吃一惊.OI,数学,化学的题目都出好了,物理的题还没有一道.于是,Huntfire,absi2011,lanlan对soha进行轮番炸,准备炸到soha出来,不料 ...
- [P1580] yyy loves Easter_Egg I
Link: P1580 传送门 Solution: 拿来练练字符串的读入: 1.$gets()$相当于$c++$中的$getline()$,但返回值为指针!(无数据时为NULL) (都读入换行符,并将 ...
- [洛谷P1580]yyy loves Easter_Egg I
题目大意:很多人@一个人,如果那个人忍不住说话了,就轰炸成功,如果那个人没说话或者别的人没有@他或@很多个人,则轰炸失败.(具体见原题) 解题思路:字符串处理,好好用sscanf即可(细节见代码). ...
- 题解 洛谷 P1580 【yyy loves Easter_Egg I】
一言不合上代码: #include<cstdio> #include<cstring> ],bz[],dmz[]; int maohao,xf,ls,sss,lll,xxf,x ...
- 用字符串模拟两个大数相加——java实现
问题: 大数相加不能直接使用基本的int类型,因为int可以表示的整数有限,不能满足大数的要求.可以使用字符串来表示大数,模拟大数相加的过程. 思路: 1.反转两个字符串,便于从低位到高位相加和最高位 ...
- HDU-3787(字符串模拟)
Problem Description 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开.现在请计算A+B的结果,并以正常形式输出. Input 输入包含 ...
- 洛谷P2397 yyy loves Maths VI (mode)
P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...
随机推荐
- 【javascript】javasrcipt设计模式之策略模式
策略模式支持在运行时由使用者选择合适的算法,对于使用者而言不用关心背后的具体事项,而使用者自动根据当前程序执行的上下文和配置,从已有的算法列表中选择出合适的算法来处理当前任务. 1.要解决的问题 2. ...
- C++学习笔记(7)----类的数组中构造函数和析构函数的调用顺序
C++类的数组中构造函数和析构函数的调用顺序(2) 对于如下的代码: #include<iostream> using namespace std; class CBase { priva ...
- GDAL2.0编译——32位和64位
准备工作: Source下载,这里下载对应的GDAL版本 https://trac.osgeo.org/gdal/wiki/DownloadSource 懒得编译也可以在这里下载对应版本 https: ...
- Monte Calro Tree Search (MCTS)
https://blog.csdn.net/natsu1211/article/details/50986810, 感谢分享! Intro最近阿法狗和李师师的人机大战着实火了一把,还顺带捧红了柯杰,古 ...
- maven(14)-nexus仓库基本用法
登录 启动nexus3,访问http://localhost:8081/ 点击右上角sign in登录,默认用户名:admin 密码:admin123,登陆后可以点击右上角的admin,修改默认密 ...
- HTML5盒子模型。
盒子模型. 盒子由 margin.border.padding.content 四部分组成. margin :外边距 border:边框 padding:内边距 (内容与边框的距离) content: ...
- what's up ? docker, all right.
Docker install 下载对应安装包,离线安装 Docker 需要 docker-engine.docker-engine-selinux.libtool-ltdl这三个软件包. 下面以安装 ...
- 绘制虚线的UIView
绘制虚线的UIView CAShapeLayer配合贝塞尔曲线可以绘制曲线,笔者继承了一个UIView的子类,并将该子类的backedLayer替换为CAShapeLayer,以此来实现绘制虚线的效果 ...
- 外部读取Excel的两种方法
1.使用Epplus读取 下载地址为https://epplus.codeplex.com/,下载文件后引用Epplus.dll文件. 这个类库读取Excel方便快捷,但是它只能读取.xlsx类型的文 ...
- VC listBox控件的方法
获取listBox里所有行数 GetCount(); 设置某行的选中状态 SetSel(index,true);第一个参数是行号,第二个参数是否选中