元素选择器csp

1.解题思路

注意标签是不分大小写而id分大小写且每行只含一个元素,所以对于每一行提取出其标签(统一转换为小写)、id(如果有)和通过点的个数计算层级,对于每一组查询输入,找到最后一层的元素,遍历每一行,找到与之相等且类型匹配的行,如果是后代,则不断向前查找,层级依次减一,判断是否符合后代元素的要求。

2.满分代码

#include<bits/stdc++.h>
using namespace std;
const int N=106;
int n,m;
string line[N];
vector<string>ans;
vector<int>num;
struct node{string label;string id;int depth;
}a[N];
void tran(string &str)
{int len=str.size();for(int i=0;i<len;i++){if(str[i]>='A'&&str[i]<='Z')str[i]=str[i]-'A'+'a';}
}
void deal(string str,int x) 
{int pos1=0,pos2=0,cnt=0,flag=0;for(int i=0;i<str.size();i++){while(str[i]=='.'){i++;cnt++;}if(str[i]!='#'&&flag==0){pos1=i;flag=1;}else if(str[i]=='#'){pos2=i;break;}}if(pos2==0){a[x].depth=cnt/2;string tmp=str.substr(pos1);tran(tmp);a[x].label=tmp;}else{a[x].depth=cnt/2;string tmp=str.substr(pos1,pos2-pos1-1);tran(tmp);string tmp2=str.substr(pos2);a[x].label=tmp;a[x].id=tmp2;}
}
bool solve(int x)
{int dep=a[x].depth,index=ans.size()-2;for(int i=x-1;i>=1;i--){if(a[i].depth==dep-1){if(ans[index][0]!='#'&&a[i].label==ans[index])index--;else if(ans[index][0]=='#'&&ans[index]==a[i].id)index--;dep=a[i].depth;if(index<0)return true;}}return false;
}
int main()
{cin>>n>>m;cin.ignore();for(int i=1;i<=n;i++){getline(cin,line[i]);//注意标签大小写不敏感而id大小写敏感 deal(line[i],i);}while(m--){int cnt=0;ans.clear();num.clear();string str,tmp;getline(cin,str);stringstream ss(str);while(ss>>tmp)ans.push_back(tmp);for(int i=0;i<ans.size();i++){if(ans[i][0]!='#')tran(ans[i]);}int last=ans.size()-1;for(int j=1;j<=n;j++){if((ans[last][0]!='#'&&a[j].label==ans[last])||(ans[last][0]=='#'&&a[j].id==ans[last])){if((ans.size()==1)||solve(j)){num.push_back(j);cnt++;}}}cout<<cnt<<" ";for(int i=0;i<num.size();i++)cout<<num[i]<<" ";cout<<endl;}return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/780266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主干网络篇 | YOLOv8更换主干网络之EfficientNet

前言:Hello大家好,我是小哥谈。EfficientNet是一种高效的卷积神经网络架构,由Mingxing Tan和Quoc V. Le在2019年提出,其设计思想是在不增加计算复杂度的情况下提高模型的准确性。它引入了一个称为"复合系数"的概念,该系数用于同时缩放网络的深度、宽度和分辨率。…

RabbitMQ 延时消息实现

1. 实现方式 1. 设置队列过期时间&#xff1a;延迟队列消息过期 死信队列&#xff0c;所有消息过期时间一致 2. 设置消息的过期时间&#xff1a;此种方式下有缺陷&#xff0c;MQ只会判断队列第一条消息是否过期&#xff0c;会导致消息的阻塞需要额外安装 rabbitmq_delayed_me…

光伏发电量预测(Python代码,CNN结合LSTM,TensorFlow框架)

1.数据集&#xff08;开始位置&#xff09;&#xff0c;数据集免费下载链接&#xff1a;https://download.csdn.net/download/qq_40840797/89051099 数据集一共8列&#xff0c;第一列是时间&#xff0c;特征列一共有6列&#xff1a;"WindSpeed" - 风速 "Sunshi…

C++template之类模版进一步了解

前言&#xff1a;这一篇是在我的上一篇文章的基础上&#xff0c;再进一步所写的。 链接&#xff1a;CTemplate&#xff1c;&#xff1e;模版的介绍及深度解析-CSDN博客 一、类模板实例化 1.非类型模版参数 类型模版参数&#xff1a;就是跟在 class后面或者typename后的类型 非…

visual studio报:引发的异常:“System.DllNotFoundException”(位于 ConsoleCAN1.exe 中)

最近在重构CAN通信的代码&#xff0c;把论文中的java转为C#实现&#xff0c;由于某种原因&#xff0c;java不能复现&#xff0c;所以转为c#。 然而c#的重构过程遇到许多问题&#xff0c;因为两种语言的编程方式、线程等等实现上有所差异。 其中一个错误&#xff1a; 引发的异…

vue3+threejs新手从零开发卡牌游戏(二十一):添加战斗与生命值关联逻辑

首先将双方玩家的HP存入store中&#xff0c;stores/common.ts代码如下&#xff1a; import { ref, computed } from vue import { defineStore } from piniaexport const useCommonStore defineStore(common, () > {const _font ref() // 字体const p1HP ref(4000) // 己…

三菱Q系列PLC以太网TCP通讯FB块源码

三菱Q系列PLC的tcp通讯&#xff0c;客户端和服务器两个变量好用的FB块&#xff0c;调用块就可以实现通讯连接&#xff0c;不需要自己写程序&#xff0c;简单配置引脚就可以。该块还集成了断网&#xff0c;连接错误&#xff0c;发送接收数据错误报警等功能。具体功能见下面介绍.…

Redis的数据类型List使用场景实战

Redis的数据类型List使用场景实战 场景题&#xff1a;面试官问redis的List数据结构在你们项目是怎么用的&#xff0c;你说没有用过&#xff0c;这哪行&#xff0c;说你能想到啥场景不&#xff0c;面试的你不知所措。。。 进入正题&#xff1a; 知识回顾 // 从左边推送数据 r…

Odoo限制线上路径访问

在Odoo中&#xff0c;有时需要限制对某些路径的访问&#xff0c;以保护敏感数据或维护系统的安全性。这可以通过自定义权限规则和修改控制器方法来实现。本教程将详细介绍如何在Odoo中限制线上路径的访问&#xff0c;包括创建自定义权限规则和修改控制器方法&#xff0c;并通过…

MongoDB聚合运算符:$let

文章目录 MongoDB聚合运算符&#xff1a;$let语法使用举例 MongoDB聚合运算符&#xff1a;$let $let聚合运算符绑定用于表示计算的变量&#xff0c;并返回表达式的结果。 语法 {$let:{vars: { <var1>: <expression>, ... },in: <expression>} }vars 用于在…

sql Tuning Advisor启用导致业务性能问题

数据库每天晚上10点后业务性能很卡&#xff0c;大量的insert被堵塞&#xff0c;查询等待事件发现有大量的“library cache lock”和“cursor: pin S wait on X”。 22:00数据库的统计信息开始收集&#xff0c; Sql Tuning Advisor堵塞了统计信息的收集&#xff0c;等待事件是“…

opencv-python库 cv2.imwrite() 保存图片

cv2.imwrite 是 OpenCV 库中的一个函数&#xff0c;用于将图像数据保存为文件。其基本语法如下&#xff1a; python cv2.imwrite(filename, img, [params]) 参数说明&#xff1a; filename&#xff1a;要保存的图像的文件名&#xff0c;包括文件路径和扩展名&#xff08;如 …

利用HIVE的窗口函数进行SQL查询中出现的问题记录

student_info部分数据 score_info部分数据 course_info 1、问题复现 --完整SQL selectsti.stu_id,sti.stu_name,concat_ws(",",collect_set(ci.course_name)) over(partition by sti.stu_id) fromstudent_info sti left joinscore_info sci onsti.stu_idsci.stu_id l…

每天学习一个Linux命令之awk

每天学习一个Linux命令之awk 介绍 在Linux系统中&#xff0c;有很多强大的命令可以帮助我们处理文本数据。其中一个非常常用且强大的命令就是awk。awk是一种编程语言&#xff0c;也是一种处理文本数据的工具。 awk通过在输入文本中匹配指定模式&#xff0c;并对匹配到的行执…

mysql之MyBatis核心工作原理

MyBatis核心工作原理 一、源码环境 1.手动编译源码 工欲善其事必先利其器。为了方便我们在看源码的过程中能够方便的添加注释&#xff0c;我们可以自己来从官网下载源码编译生成对应的Jar包&#xff0c;然后上传到本地maven仓库&#xff0c;再引用这个Jar。大家可以自行去官…

matlab 点云可视化(6)——点云按强度进行可视化

目录 一、功能概述1、算法概述2、主要函数二、代码示例三、结果展示四、参考链接本文由CSDN点云侠原创原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、功能概述 1、算法概述 点云按强度进行可视化 2、主要函数

绿联 安装Uptime Kuma - 一款开源的服务器监控和状态检测工具

Uptime Kuma 功能简介 Uptime Kuma 是一款开源的服务器监控和状态检测工具&#xff0c;它帮助您跟踪服务器的可用性、性能和健康状态。 主要功能&#xff1a; 服务器监控 Uptime Kuma 可以监控多个服务器&#xff0c;包括 Web 服务器、数据库服务器、应用程序服务器等。 它会定…

实验八 大数问题

实验名称&#xff1a;实验八 大数问题 实验目的&#xff1a;熟练掌握大数的加减、乘法、除法和高精度计算。 实验内容&#xff1a; 问题描述&#xff1a;&#xff08;大数加减&#xff09;求两个不超过200位的非负整数的和。 输入&#xff1a;有两行&#xff0c;每行是一个…

Antd Vue3 使用 Anchor 锚点组件记录

项目场景 客户要求做一个表单页面&#xff0c;表单数据分为三步&#xff0c;每一步骤是一个单独的 Vue 组件&#xff0c;表单上方需要使用锚点组件实现锚点定位到每一步的功能。 代码总览 <template><div class"guided-form-content-wrapper"><!-- …

初步了解C++

目录 一&#xff1a;什么是C&#xff1f; 二.C发展史 三:C关键字 四&#xff1a;命名空间 4.1命名空间的介绍 4.2命名空间的使用 4.3命名空间的使用 4.3.1使用作用域限定符 4.3.2 使用using将命名空间的某个成员引入 4.3.3使用using把整个命名空间展开 4.4命名空…