【洛谷1580】yyy loves Easter_Egg I(字符串处理题)
大致题意: 略。(一道模拟题,自己去看题面吧)
几个字符数组函数
纯粹是一道字符串处理题,就当是学了一下各种与字符数组相关的函数吧!
\(gets()\):这个是比较常用的函数,就是读入一行的字符。
\(strlen()\):求出字符数组的长度。
\(sscanf()\):从一个字符数组中读入,用法与\(scanf\)类似。
\(strstr()\):在一个字符数组中找到另一个字符数组第一次出现的位置,然后返回这个位置及其之后的字符。
\(strcmp()\):比较两个字符数组是否有差异。
\(count()\):后来才知道还有一个这么神奇的函数,统计一个字符在字符数组中出现的次数。我做的时候自己手写了一个。
了解了这些函数,其实这道题就比较简单了。
大致思路
先读入第一行,用一个字符数组\(target\)存下第一个被\(@\)的人,并开一个变量\(cnt\)记录当前行数。
接下来,每次读入一个字符数组,如果读完了,就输出"好队形"。
然后找出当前说话的人的名字,比较其与\(target\),若相同则输出"炸成功"。
接下来是判断这句话中存在的\(@\)个数是否为\(1\),不为\(1\)则输出"炸失败"。
然后判断被\(@\)的人是否为\(target\),若不是,也输出"炸失败"。
具体实现详见代码。
代码
#include<bits/stdc++.h>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define Gmax(x,y) (x<(y)&&(x=(y)))
#define Gmin(x,y) (x>(y)&&(x=(y)))
#define abs(x) ((x)<0?-(x):(x))
#define swap(x,y) (x^=y^=x^=y)
#define uint unsigned int
#define LL long long
#define ull unsigned long long
#define INF 1000000000
#define N 1000
#define hl_AK_NOI true
#define GetAt(s,t) (sscanf(strstr(s,"@"),"@yyy loves %s",t))//找到被@的对象
using namespace std;
char now[N+5],At[N+5],cur[N+5],target[N+5];
inline bool check(char *s,int len)//判断字符数组中含@个数是否为1,其实可以用count()函数替代
{
register int i,tot=0;
for(i=0;i<len;++i) if(!(s[i]^'@')&&tot++) return false;//如果出现次数大于1,返回false
return tot;//如果出现次数为1,返回true;如果出现次数为0,返回false
}
int main()
{
register int cnt=1,len;
gets(now),GetAt(now,target);//用target存下第一个被@的人
while(hl_AK_NOI)
{
if(++cnt,gets(now),len=strlen(now),len<2) return printf("Unsuccessful @yyy loves %s attempt\n%d\nGood Queue Shape",target,cnt-1),0;//判断是否读完
if(sscanf(now,"yyy loves %s",cur),!strcmp(cur,target)) return printf("Successful @yyy loves %s attempt",target),0;//比较当前说话的人与target
if(!check(now,len)) return printf("Unsuccessful @yyy loves %s attempt\n%d\nyyy loves %s",target,cnt,cur),0;//判断这句话中存在的@个数是否为1
if(GetAt(now,At),strcmp(At,target)) return printf("Unsuccessful @yyy loves %s attempt\n%d\nyyy loves %s",target,cnt,cur),0;//判断被@的人是否为target
}
return 0;
}
【洛谷1580】yyy loves Easter_Egg I(字符串处理题)的更多相关文章
- [洛谷1580]yyy loves Easter_Egg I
题目背景 Soha的出题效率着实让人大吃一惊.OI,数学,化学的题目都出好了,物理的题还没有一道.于是,Huntfire,absi2011,lanlan对soha进行轮番炸,准备炸到soha出来,不料 ...
- 洛谷 P1580 yyy loves Easter_Egg I
洛谷 P1580 yyy loves Easter_Egg I 题解: 队列+字符串 #include <cstdio> #include <string> #include ...
- [洛谷P1580]yyy loves Easter_Egg I
题目大意:很多人@一个人,如果那个人忍不住说话了,就轰炸成功,如果那个人没说话或者别的人没有@他或@很多个人,则轰炸失败.(具体见原题) 解题思路:字符串处理,好好用sscanf即可(细节见代码). ...
- [洛谷2397]yyy loves Maths VI
题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 他让redbag找众数他还特意 ...
- 洛谷P2397 yyy loves Maths VI (mode)
P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...
- 洛谷P2396 yyy loves Maths VII
P2396 yyy loves Maths VII 题目背景 yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字" 题目描述 ...
- 洛谷——P2393 yyy loves Maths II
P2393 yyy loves Maths II 题目背景 上次蒟蒻redbag可把yyy气坏了,yyy说他只是小学生,蒟蒻redbag这次不坑他了. 题目描述 redbag给了yyy很多个数,要yy ...
- [CF327E]Axis Walking([洛谷P2396]yyy loves Maths VII)
题目大意:给一个长度为$n(1\leqslant n\leqslant24)$的序列$S$和$k(0\leqslant k\leqslant2)$个数. 求有多少种$S$的排列方式使得其任何一个前缀和 ...
- 洛谷 P2393 yyy loves Maths II
P2393 yyy loves Maths II 题目背景 上次蒟蒻redbag可把yyy气坏了,yyy说他只是小学生,蒟蒻redbag这次不坑他了. 题目描述 redbag给了yyy很多个数,要yy ...
- 【题解】洛谷P2418 yyy loves OI IV
感觉很是妙啊……这题数次误入歧途...最开始想的二维dp,单调队列优化:无果,卒.于是没忍住看了下标签:暴力枚举?搜索?于是开始想记忆化搜索.以为会有什么很强的剪枝之类的:30分,卒.最后终于回到正道 ...
随机推荐
- Codeforces Round #523 (Div. 2)C(DP,数学)
#include<bits/stdc++.h>using namespace std;long long a[100007];long long dp[1000007];const int ...
- Codeforces570C 【简单标记】
题意: 给定一个长为n的字符串(包含小写字母和'.'),有m次操作 每次操作可以修改字符,并询问修改后有多少对相邻的'.' 思路: 标记. #include<bits/stdc++.h> ...
- 对各种lca算法的理解
1.RMQ+ST 首先注意这个算法的要素:结点编号,dfs序,结点深度. 首先dfs,求出dfs序,同时求出每个结点的深度.然后st算法,维护深度最小的结点编号(dfs序也可以,因为他们俩可以互相转换 ...
- linux_下IP、网关、DNS地址配置
设置Linux网络的方法有两种: 第一种:修改配置文档(需要重启网络配置,永远生效)一.修改IP地址[aeolus@db1 network-scripts]$ vi ifcfg-eth0DEVICE= ...
- JOS环境搭建
想写一个OS很久了,今天开始正式动工了!! 大家都知道操作系统是计算机科学中十分重要的一门基础学科.但是以前在学习这门课时,仅仅只是把目光停留在课本上一些关于操作系统概念上的叙述,并不能对操作系统有着 ...
- Clion下载安装使用教程(Win+MinGW)
Clion Jetbrains旗下产品之一,主要用来开发C/C++,软件相比VS来说轻巧很多 一.Clion下载(Crack...) 链接:https://www.bicfic.com/ 你懂的,全英 ...
- C#与重构(入门)
C#与代码重构(入门) 重构(Refactoring)就是通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性. 单从概念少来理解重构可能很抽象,那么通过下 ...
- 使用AlarmManager定期执行工作
新建一个Service来模拟后台执行的程序,PollingService.java: package com.ryantang.rtpollingdemo; import android.app.No ...
- android中AudioRecord使用
一 什么是音频的采样率和采样大小 自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码.即PCM编码.PCM通过抽样.量化.编码三个步骤将连续变化的模拟信号转换为数字编码. 抽样:在 ...
- SSM整合笔记
SSM整合笔记 1,创建maven项目 创建maven项目过程省略 ps:如果创建完maven项目之后项目报错,可能是没有配置Tomcat 2,在pom.xml里面导入相应的jar的依赖 <pr ...