CF113A Grammar Lessons 题解
一道模拟题。
题目传送门
题目意思:
给你一个句子,让你检查这个句子的语法是否正确。(语法请自行在题目中查看)
思路:
就是模拟。依次判断这个句子是否符合每一条语法即可。但是细节很多就因为细节我错了好多次!具体看代码注释。
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
string a[N];
int cnt;
bool fh(string s)//判断单词是否合法
{int len=s.size();s=" "+s;if(s[len]=='s'&&s[len-1]=='o'&&s[len-2]=='i'&&s[len-3]=='l')return 1;if(s[len]=='r'&&s[len-1]=='t'&&s[len-2]=='e')return 1;if(s[len]=='s'&&s[len-1]=='i'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 1;if(s[len]=='a'&&s[len-1]=='l'&&s[len-2]=='a'&&s[len-3]=='i'&&s[len-4]=='l')return 1;if(s[len]=='a'&&s[len-1]=='r'&&s[len-2]=='t'&&s[len-3]=='e')return 1;if(s[len]=='s'&&s[len-1]=='e'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 1;return 0;
}
bool fx(string s)//判断单词的性别
{int len=s.size();s=" "+s;if(s[len]=='s'&&s[len-1]=='o'&&s[len-2]=='i'&&s[len-3]=='l')return 1;if(s[len]=='r'&&s[len-1]=='t'&&s[len-2]=='e')return 1;if(s[len]=='s'&&s[len-1]=='i'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 1;if(s[len]=='a'&&s[len-1]=='l'&&s[len-2]=='a'&&s[len-3]=='i'&&s[len-4]=='l')return 0;if(s[len]=='a'&&s[len-1]=='r'&&s[len-2]=='t'&&s[len-3]=='e')return 0;if(s[len]=='s'&&s[len-1]=='e'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 0;
}
int fc(string s)//判断单词的词性
{int len=s.size();s=" "+s;if(s[len]=='s'&&s[len-1]=='o'&&s[len-2]=='i'&&s[len-3]=='l')return 1;if(s[len]=='r'&&s[len-1]=='t'&&s[len-2]=='e')return 2;if(s[len]=='s'&&s[len-1]=='i'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 3;if(s[len]=='a'&&s[len-1]=='l'&&s[len-2]=='a'&&s[len-3]=='i'&&s[len-4]=='l')return 1;if(s[len]=='a'&&s[len-1]=='r'&&s[len-2]=='t'&&s[len-3]=='e')return 2;if(s[len]=='s'&&s[len-1]=='e'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 3;
}
int main()
{while(cin>>a[++cnt]);cnt--;int x=0,y=0;for(int i=1;i<=cnt;i++){if(!fh(a[i]))//不合法直接输出NO{cout<<"NO";return 0;}if(fx(a[i]))x++;else y++;}if(!((!x&&y)||(x&&!y))){//性别不一样输出NOcout<<"NO";return 0;}int num=0;if(cnt==1&&fh(a[1])){cout<<"YES";return 0;}//只有一个合法单词输出YESif(cnt==2){//只有两个单词的特殊情况if(fc(a[1])==1&&fc(a[2])!=2){//第一个单词是形容词但是第二个单词不是名词cout<<"NO";return 0;}if(fc(a[1])==2&&fc(a[2])!=3){//第一个单词是名词但是第二个单词不是动词cout<<"NO";return 0;}if(fc(a[1])==3){//第一个单词是动词cout<<"NO";return 0;}cout<<"YES";return 0;}for(int i=2;i<cnt;i++){if(fc(a[i])==1){//如果当前单词是形容词if(fc(a[i-1])==1&&(fc(a[i+1])==1||fc(a[i+1])==2))continue;cout<<"NO";//如果形容词的上一个不是形容词或者形容词的下一个不是形容词或名词就输出NOreturn 0;}if(fc(a[i])==2){//如果当前单词是名词if(fc(a[i-1])==1&&fc(a[i+1])==3)continue;cout<<"NO";//如果名词的上一个不是形容词或者名词的下一个不是动词就输出NOreturn 0;}if(fc(a[i])==3){//如果当前单词是动词if((fc(a[i-1])==3||fc(a[i-1])==2)&&fc(a[i+1])==3)continue;cout<<"NO";//如果动词的上一个不是动词或名词,或者动词的下一个不是动词就输出NOreturn 0;}}for(int i=1;i<=cnt;i++)if(fc(a[i])==2)num++;//判断有多少个名词if(num!=1&&cnt>1){//有多个名词就输出NOcout<<"NO";return 0;}cout<<"YES";//改句子符合语法,输出YESreturn 0;
}
完美撒花~
相关文章:
CF113A Grammar Lessons 题解
一道模拟题。 题目传送门 题目意思: 给你一个句子,让你检查这个句子的语法是否正确。(语法请自行在题目中查看) 思路: 就是模拟。依次判断这个句子是否符合每一条语法即可。但是细节很多就因为细节我错了好多次&…...

puzzle(0414)六边形拼图
目录 六边形拼图 简单 中等 困难 六边形拼图 taptap小游戏 简单 (3) (4) 中等 (3) (4) 困难 (2) (3) (4ÿ…...

回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测
回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测; 2.运行环…...
BEV感知实时构建路口拓扑 觉非科技基于MapTR的优化与实践
近期,觉非科技通过在车端与路端的大规模数据积累,基于MapTR(Map TRansformer)方法提出了创新与优化:①对车道信息的表达方式进行优化,并简化了模型结构;②在MapTR的基础上加入了地图先验信息&am…...

如何在TikTok“点火”?用时下最流行的工具解码赚钱
抖音电商飞速发展到今天,训练出一帮极具紧张感、高效性,和“数据特征”凸显的电商从业者。 注意,这里的"数据特征"不单单是数据分析、数据导向那么简单,而是被竟对、平台、市场的现实教育出来的“数据工具意识”。 “…...
set NOCOUNT on
SET NOCOUNT ON 是一条 SQL 语句,用于禁止在执行查询时返回受影响的行数消息。通常,当执行 INSERT、UPDATE、DELETE 等操作时,数据库会返回一个消息,表示受影响的行数。但在某些情况下,你可能希望禁用这些消息…...
垃圾回收机制
什么是内存泄漏? 内存泄漏是指程序中已经不再使用的内存却没有被正确释放或回收的情况。在编程中,当对象或数据不再被程序使用,但其所占用的内存空间没有被垃圾回收机制回收,就会导致内存泄漏。 内存泄漏可能会导致程序的内存消…...
Golang 程序性能优化利器 PGO 详解(一):简单介绍及使用
在软件开发过程中,性能优化是不可或缺的一部分。无论是在Web服务、数据处理系统还是实时通信中,良好的性能都是至关重要的。Golang 从1.20版版本开始引入的 Profile Guided Optimization(PGO)机制能够帮助更好地优化 Go 程序的性能…...
redis key操作的相关命令
目录 1、del key 2、dump key 3、exists key 4、expire key seconds 5、expireat key timestamp 6、pexpire key milliseconds 7、pexpireat key milliseconds-timestamp 8、keys pattern 9、move key db …...

WebRTC | 网络传输协议RTP与RTCP
目录 一、UDP与TCP 1. TCP 2. UDP 二、RTP 1. RTP协议头 (1)V(Version)字段 (2)P(Padding)字段 (3)X(eXtension)字段 &#x…...

160. 相交链表
题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交**:** 题目数据 保证 整个链式结构中不存在环。 注意,函…...
【MFC】12.双缓冲序列化机制-笔记
双缓冲 双缓冲在之前写字符雨的时候,已经简单介绍过,今天我们来写一个简单的程序来体会双缓冲机制 我们实现一个在屏幕上画直线的功能: 在类中添加变量,保存起点坐标和终点坐标: //定义一个容器,保存每…...

Linux 终端会话中,启动任务并放到后台运行
一、需求 linux要执行一个脚本,耗时很长,想要脚本在后台运行,用户注销或终端软件关闭时也可以继续运行。 二、实现 1、nohup命令 脚本在后台运行 nohup 是在 Linux 和类 Unix 系统中使用的一个命令,用于在后台运行程序&#x…...

软考笔记——10.项目管理
进度管理 进度管理就是采用科学的方法,确定进度目标,编制进度计划和资源供应计划,进行进度控制,在与质量、成本目标协调的基础上,实现工期目标。 具体来说,包括以下过程: (1) 活动定义&#…...

算法与数据结构(二十四)最优子结构原理和 dp 数组遍历方向
注:此文只在个人总结 labuladong 动态规划框架,仅限于学习交流,版权归原作者所有; 本文是两年前发的 动态规划答疑篇open in new window 的修订版,根据我的不断学习总结以及读者的评论反馈,我给扩展了更多…...

Java Vue Uniapp MES生产执行管理系统
本MES系统是一款B/S结构、通用的生产执行管理系统,功能强大! 系统基于多年离散智造行业的业务经验组建,主要目的是为国内离散制造业的中小企业提供一个专业化、通用性、低成本的MES系统解决方案。 联系作者获取...
深入探究Socks5代理与IP代理在网络安全与爬虫中的应用
1. Socks5代理:打开网络隧道的多功能工具 Socks5代理是一种流行的代理协议,它在传输层为数据包提供了隧道。相较于之前的版本,Socks5不仅支持TCP连接,还可以处理UDP流量,使其在需要实时数据传输的应用中表现出色。在网…...

Vue使用jspdf和html2canvas组件库结合导出PDF文件
效果图: 1、安装依赖: npm install html2canvas --save npm install jspdf --save 或 yarn add html2canvas --save yarn add jspdf --save 2、封装全局调用方法:this.$exportPDF(#id,文件名) 新建js文件:/utils/html2Pdf.js&am…...

7. 实现 API 自动生成
目录 1. pom.xml中引用依赖 2. 引入相关的依赖 3. 编写配置类 4. application.yml 中添加配置 5. API 常用注解 6. 访问 API 列表 7. API 导入 Postman 使用 Springfox Swagger生成 API,并导入 Postman,完成API单元测试。 Swagger 简介:Swag…...

使用Druid解析SQL,获取SQL中所有使用的表
一、sqlParse组成 Druid SQL Parser分三个模块: - Parser - AST - Visitor 1.1 Parser parser是将输入文本转换为ast(抽象语法树),parser有包括两个部分,Parser和Lexer,其中Lexer实现词法分析&#x…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...