A. Grammar Lessons
time limit per test

5 seconds

memory limit per test

256 megabytes

input

standard input

output

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.

Input

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.

Output

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).

Sample test(s)
input
petr
output
YES
input
etis atis animatis etis atis amatis
output
NO
input
nataliala kataliala vetra feinites
output
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(实现)的更多相关文章

  1. Codeforces 915E Physical Education Lessons

    原题传送门 我承认,比赛的时候在C题上卡了好久(最后也不会),15min水掉D后(最后还FST了..),看到E时已经只剩15min了.尽管一眼看出是离散化+线段树的裸题,但是没有时间写,实在尴尬. 赛 ...

  2. Codeforces 915 E Physical Education Lessons

    题目描述 This year Alex has finished school, and now he is a first-year student of Berland State Univers ...

  3. Physical Education Lessons CodeForces - 915E (动态开点线段树)

    Physical Education Lessons CodeForces - 915E This year Alex has finished school, and now he is a fir ...

  4. codeforces 45C C. Dancing Lessons STL

    C. Dancing Lessons   There are n people taking dancing lessons. Every person is characterized by his ...

  5. codeforces 893F - Physical Education Lessons 动态开点线段树合并

    https://codeforces.com/contest/893/problem/F 题意: 给一个有根树, 多次查询,每次查询对于$x$i点的子树中,距离$x$小于等于$k$的所有点中权值最小的 ...

  6. 【CodeForces】915 E. Physical Education Lessons 线段树

    [题目]E. Physical Education Lessons [题意]10^9范围的区间覆盖,至多3*10^5次区间询问. [算法]线段树 [题解]每次询问至多增加两段区间,提前括号分段后线段树 ...

  7. Physical Education Lessons Codeforces - 915E

    http://codeforces.com/problemset/problem/915/E 大概有几种思路: 1.动态开点线段树+标记下传 #1.1标记永久化:想了一会没想出来 1.2可以先扫一遍询 ...

  8. Codeforces 915E. Physical Education Lessons(动态开点线段树)

    E. Physical Education Lessons 题目:一段长度为n的区间初始全为1,每次成段赋值0或1,求每次操作后的区间总和.(n<=1e9,q<=3e5) 题意:用线段树做 ...

  9. Educational Codeforces Round 36 (Rated for Div. 2) E. Physical Education Lessons

    提供两种思路 一种线段树区间更新 另一种用map维护连续的区间,也是题解的思路 第二种很难写(我太渣,看了别人的代码,发现自己写的太烦了) #include<iostream> #incl ...

随机推荐

  1. Linux tcpdump命令具体解释

    简单介绍 用简单的话来定义tcpdump,就是:dump the traffic on a network,依据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump能够将网络中传送的数据 ...

  2. ym——Android之ListView性能优化

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android之ListView性能优化 假设有看过我写过的15k面试题的朋友们一定知 ...

  3. jquery自定义插件——window实现

    该示例实现弹出窗口效应: 1.jquery.show.js /* * 开发人员:lzugis * 开发时间:2014年6月10日 * 实现功能:点击在鼠标位置显示div * 版本号序号:1.0 */ ...

  4. BZOJ 2435 NOI2011 道路建设 BFS/DFS

    标题效果:给定一个树(直接将树.不要贪图生成树图!).寻找每条边权值*分差的两侧之间 BFS水必须是能 竟DFS能够住...系统堆栈可能有些不够,我们可以使用内联汇编手册中大型系统堆栈 详见代码 这个 ...

  5. 家庭洗车APP --- Androidclient开展 之 网络框架包介绍(一)

    家庭洗车APP --- Android客户端开发 之 网络框架包介绍(一) 上篇文章中给大家简单介绍了一些业务.上门洗车APP --- Android客户端开发 前言及业务简单介绍,本篇文章给大家介绍 ...

  6. 关闭 MsMpEng.exe

    MsMpEng.exe是Windows Defender 自动保护服务的核心引擎. 系统是win8.1 最近发现MsMpEng.exe是任务管理器里面最占内存的一个程序,且无法强制结束程序.偶然发现一 ...

  7. 转让malloc()该功能后,发生了什么事内核?附malloc()和free()实现源

    特此声明:在本文中,引用另一篇文章和帖子,结合的概括的理解malloc()函数的实现机制. 我们常常会在C程序中调用malloc()函数动态分配一块连续的内存空间并使用它们.那么,这些用户空间发生的事 ...

  8. C++几个小函数

    之前看书,遇到几个编程题,要实现一些库自带的函数.于是动手写了写,并且做了一些测试.今晚在测试的时候,还发现了一些其他内存分配的问题,顺路一起记下.这里只写了字符串转整型,字符串赋值函数. #incl ...

  9. BZOJ 3505 CQOI 2014 数三角形 数学

    标题效果:到m*n该网络格,问:有网络格是一个三角形的顶点的数目. 思维:数学.首先计算所有三个相同的,不.然后,在上线的一个点失去了三个点是其中.需要注意的是,答案开放long long. CODE ...

  10. zoj2588 Burning Bridges --- 寻求尖端

    #include <iostream> #include <cstring> #include <string> #include <cstdio> # ...