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 ...
随机推荐
- ftk学习记录(多形式的文章)
[声明:版权全部.欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在上周末的博客中,我们谈到了list view,今天能够看看效果图怎样. 假设大家细心一点,能够 ...
- Python 统计Facebook用户爱好的个数
CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-12 @author: guaguastd @name: f ...
- 思维导图之C++语言程序设计总结
花了大约一周的时间,将c++的课本过了一遍,米老师说第一遍不求甚解,仅仅管去看就能够了,我很成功地运行了老师这种方法,嘿嘿.那么c++是什么呢?百度上这样说,它是一种使用很广泛的计算机编程语言.C++ ...
- 无法使用Django新建项目:'django-admin.py'不是内部或外部命令
问题: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXlhdGxhbnRpcw==/font/5a6L5L2T/fontsize/400/fill/I0 ...
- ffmpeg和opencv 播放视频文件和显示器
ffmpeg它是基于最新版本,在官网下载http://ffmpeg.zeranoe.com/builds/.编译时VS2010配置相关头文件及库的路径就可以.opencv的搭建參考上一个博客. 首先简 ...
- Cocos2d-x源代码解析(1)——地图模块(3)
接上一章<Cocos2d-x源代码解析(1)--地图模块(2)> 通过前面两章的分析,我们能够知道cocos将tmx的信息结构化到 CCTMXMapInfo.CCTMXTilesetInf ...
- 探索Scala(1)-- 运算符重载
Scala语言运算符重载全然是语法层面的小把戏,本文记录我对Scala语言运算符重载的一些理解. 方法调用语法糖 调用方法时,Scala同意省略点号和圆括号,如以下代码所看到的: 把运算符映射成单词 ...
- js面向对象的学习笔记九(BOM 与 DOM 经常使用的属性分析)
一 BOM物 window 的 相关属性 1. 用户配置的机器配置对象 navigator navigator.userAgent //该属性能够查看用户机器浏览器的配置 "Mozilla ...
- hdu 4542 数论 + 约数个数相关 腾讯编程马拉松复赛
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4542 小明系列故事--未知剩余系 Time Limit: 500/200 MS (Java/Others) ...
- Crazy Rows
Problem You are given an N x N matrix with 0 and 1 values. You can swap any two adjacent rows of the ...