Codeforces 113A-Grammar Lessons(实现)
5 seconds
256 megabytes
standard input
standard output
Petya got interested in grammar on his third year in school. He invented his own language called Petya's. Petya wanted to create a maximally simple language that would be enough to chat with friends, that's why all the language's grammar can be described with
the following set of rules:
- There are three parts of speech: the adjective, the noun, the verb. Each word in his language is an adjective, noun or verb.
- There are two genders: masculine and feminine. Each word in his language has gender either masculine or feminine.
- Masculine adjectives end with -lios, and feminine adjectives end with -liala.
- Masculine nouns end with -etr, and feminime nouns end with -etra.
- Masculine verbs end with -initis, and feminime verbs end with -inites.
- Thus, each word in the Petya's language has one of the six endings, given above. There are no other endings in Petya's language.
- It is accepted that the whole word consists of an ending. That is, words "lios", "liala",
"etr" and so on belong to the Petya's language. - There aren't any punctuation marks, grammatical tenses, singular/plural forms or other language complications.
- A sentence is either exactly one valid language word or exactly one statement.
Statement is any sequence of the Petya's language, that satisfy both conditions:
- Words in statement follow in the following order (from the left to the right): zero or more adjectives followed by exactly one noun followed by zero or more verbs.
- All words in the statement should have the same gender.
After Petya's friend Vasya wrote instant messenger (an instant messaging program) that supported the Petya's language, Petya wanted to add spelling and grammar checking to the program. As Vasya was in the country and Petya didn't feel like waiting, he asked
you to help him with this problem. Your task is to define by a given sequence of words, whether it is true that the given text represents exactly one sentence in Petya's language.
The first line contains one or more words consisting of lowercase Latin letters. The overall number of characters (including letters and spaces) does not exceed 105.
It is guaranteed that any two consecutive words are separated by exactly one space and the input data do not contain any other spaces. It is possible that given words do not belong to the Petya's language.
If some word of the given text does not belong to the Petya's language or if the text contains more that one sentence, print "NO" (without the quotes). Otherwise,
print "YES" (without the quotes).
petr
YES
etis atis animatis etis atis amatis
NO
nataliala kataliala vetra feinites
YES
应该是Div 1.有点麻烦。最初题意还看错了sad 7次才过掉。
题意: 如今有3种词,形容词,名词,动词,每种词有两种词性,每种词性相应一种后缀,如今给出一个句子的定义:要求是有一个合法单词或一个合法声明。
合法单词是指有一种上面的后缀;合法声明定义为:含有0个以上的形容词+一个名词+0个以上的动词(按形容词名词动词的顺序且所以的词的词性同样)
哎个推断条件就是了。。非常easy漏点
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <cstdlib>
#include <set>
#include <map>
#include <vector>
#include <string>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;
const int INF = 0x3f3f3f3f;
#define LL long long
char s[100010];
char word[100010];
int num[100010];
int change()
{
int len=strlen(word);
if(len<3)
return 0;
if(strcmp(word+len-4,"lios")==0)
return 1;
if(strcmp(word+len-5,"liala")==0)
return -1;
if(strcmp(word+len-3,"etr")==0)
return 2;
if(strcmp(word+len-4,"etra")==0)
return -2;
if(strcmp(word+len-6,"initis")==0)
return 3;
if(strcmp(word+len-6,"inites")==0)
return -3;
return 0; }
int main()
{
while(gets(s))
{
int tp=0,flag=1,i,len=strlen(s),t,p=0,cnt=0;
for(i=0;i<=len;i++)
{
if(s[i]!=' '&&s[i]!='\0')
{
word[p++]=s[i];
}
else
{
word[p]='\0';
t=change();
cnt++;
if(t!=0)
num[tp++]=t;
else
{
flag=0;
break;
}
}
}
//printf("%d\n",cnt);
if(cnt==1&&flag==1)
{
puts("YES");
continue;
}
if(flag==0)
{
puts("NO");
continue;
}
cnt=0;
for(i=0;i<tp;i++)
if(abs(num[i])==2)
cnt++;
if(cnt!=1)
{
puts("NO");
continue;
}
flag=1;
if(num[0]<0)
{
for(i=1;i<tp;i++)
if(num[i]>0)
{
flag=0;
break;
}
}
else
{
for(i=1;i<tp;i++)
if(num[i]<0)
{
flag=0;
break;
}
}
if(flag==0)
{
puts("NO");
continue;
}
flag=1;
for(i=1;i<tp;i++)
{
if(abs(num[i])<abs(num[i-1]))
{
flag=0;
break;
}
}
if(flag)
puts("YES");
else
puts("NO");
}
return 0;
}
Codeforces 113A-Grammar Lessons(实现)的更多相关文章
- Codeforces 915E Physical Education Lessons
原题传送门 我承认,比赛的时候在C题上卡了好久(最后也不会),15min水掉D后(最后还FST了..),看到E时已经只剩15min了.尽管一眼看出是离散化+线段树的裸题,但是没有时间写,实在尴尬. 赛 ...
- Codeforces 915 E Physical Education Lessons
题目描述 This year Alex has finished school, and now he is a first-year student of Berland State Univers ...
- Physical Education Lessons CodeForces - 915E (动态开点线段树)
Physical Education Lessons CodeForces - 915E This year Alex has finished school, and now he is a fir ...
- codeforces 45C C. Dancing Lessons STL
C. Dancing Lessons There are n people taking dancing lessons. Every person is characterized by his ...
- codeforces 893F - Physical Education Lessons 动态开点线段树合并
https://codeforces.com/contest/893/problem/F 题意: 给一个有根树, 多次查询,每次查询对于$x$i点的子树中,距离$x$小于等于$k$的所有点中权值最小的 ...
- 【CodeForces】915 E. Physical Education Lessons 线段树
[题目]E. Physical Education Lessons [题意]10^9范围的区间覆盖,至多3*10^5次区间询问. [算法]线段树 [题解]每次询问至多增加两段区间,提前括号分段后线段树 ...
- Physical Education Lessons Codeforces - 915E
http://codeforces.com/problemset/problem/915/E 大概有几种思路: 1.动态开点线段树+标记下传 #1.1标记永久化:想了一会没想出来 1.2可以先扫一遍询 ...
- Codeforces 915E. Physical Education Lessons(动态开点线段树)
E. Physical Education Lessons 题目:一段长度为n的区间初始全为1,每次成段赋值0或1,求每次操作后的区间总和.(n<=1e9,q<=3e5) 题意:用线段树做 ...
- Educational Codeforces Round 36 (Rated for Div. 2) E. Physical Education Lessons
提供两种思路 一种线段树区间更新 另一种用map维护连续的区间,也是题解的思路 第二种很难写(我太渣,看了别人的代码,发现自己写的太烦了) #include<iostream> #incl ...
随机推荐
- java main方法背后的故事?(转)
jvm java 看似一种语言,实则一个巨大的体系的王国,开发这么多年了,还是没有搞懂,我以为我懂了,可是过了一段时间又忘了,所以说还是没懂 1.main方法说起 编译完我们的java文件后,需要有个 ...
- C/C++综合測试题(三)
又刷了一套题 这些题都是百度.阿里巴巴.腾讯.网易.新浪等公司的面试原题,有一定的难度.只是确实相当有水平,能够通过做题来查漏补缺. 1.补充以下函数代码: 假设两段内存重叠,用memcpy函数可能会 ...
- HDU 4946 Area of Mushroom 凸包
链接:pid=4946">http://acm.hdu.edu.cn/showproblem.php?pid=4946 题意:有n个人.在位置(xi,yi),速度是vi,假设对于某个点 ...
- ssl通关的概念(一个)
在公司最近的项目涉及多种加密.安全.我一直在这方面缺乏经验.很协议仅仅知道是什么概念.用于传输的加密SSL,也煞费苦心.非常easy一件事,折腾了很长一段时间.IT该行啊,真的是.难者不会,与会者困难 ...
- HTML与XHTML差额
实际上.XHTML 与 HTML 4.01 标准没有太多的不同. 它们最基本的不同.举例说明例如以下: 1.XHTML 元素必须被正确地嵌套. 错误:<p><span>this ...
- Swing 显示良好JPanel保存为图片
在JFrame例如,下面的代码被添加 //自己的JPanel DrawPanel drawPanel = new DrawPanel(list, width, height, start, end); ...
- C# DateTime结构的常用方法
在项目开发中,经常会碰到日期处理.比如查询中,可能会经常遇到按时间段查询,有时会默认取出一个月的数据.当我们提交数据时,会需要记录当前日期,等等.下面就看看一些常用的方法. 首先,DateTime是一 ...
- 分布式中使用Redis实现Session共享(转)
上一篇介绍了如何使用nginx+iis部署一个简单的分布式系统,文章结尾留下了几个问题,其中一个是"如何解决多站点下Session共享".这篇文章将会介绍如何使用Redis,下一篇 ...
- CodeForces 441 A. Valera and Antique Items
纯粹练JAVA.... A. Valera and Antique Items time limit per test 1 second memory limit per test 256 megab ...
- Spring先进的交易管理困难剖析
1Spring事务传播行为 所谓事务传播行为就是多个事务方法相互调用时,事务怎样在这些方法间传播.Spring支持7种事务传播行为 PROPAGATION_REQUIRED(增加已有事务) 假设当前没 ...