元素选择器

思路

开始想用一个栈来进行存储以及判断,后来发现没有必要,数据也不大,我们直接顺序找所有点即可。
存储时存储.的个数,之后的判断层数就根据点的多少来直接判断。
对于一个查找,找到与最后一个相同的文档,从该位置开始,向前遍历,如果层级比当前低,则对这个进行一个判断,并且走到当前位置,判断标签或id是否相同。
还有一点是这个不是要每一级必须相邻,借用样例,加入要查找body h2,是可以找到答案的,尽管中间隔了一个div。
还有要注意的是要对标签进行全部小写的处理。

代码

#include<iostream>
#include<cstring>
#include<vector>
#include<sstream>
#include<string>
#include<algorithm>using namespace std;struct node
{string label,id;int count;
};node a[105];bool find(int& now,int& count,string s)
{for(int i=now;i>=1;i--)if(a[i].count<count){now=i;count=a[i].count;if (a[i].label==s||a[i].id==s) return true;}return false;
}int main()
{int n,m,l1,l2,cou;string s;cin>>n>>m;getchar();for(int i=1;i<=n;i++){getline(cin,s);l1=l2=-1;     cou=0;for(int j=0;j<s.length();j++){if (s[j]=='.')cou++;if (l1==-1&&s[j]!='#'&&s[j]!='.') l1=j;if (s[j]=='#') l2=j;}a[i].count=cou;if(l2==-1){a[i].label=s.substr(l1);a[i].id="";}else {a[i].label=s.substr(l1,l2-l1-1);a[i].id=s.substr(l2);}transform(a[i].label.begin(), a[i].label.end(), a[i].label.begin(), ::tolower);}vector<string> v;vector<int> ans;for (int i=1;i<=m;i++){v.clear();ans.clear();getline(cin,s);int x=0,y=0;while (1){string ss;x=s.find(" ",y);if (x==-1)ss=s.substr(y);elsess=s.substr(y,x-y); if (ss[0]!='#')transform(ss.begin(),ss.end(),ss.begin(),::tolower);v.push_back(ss);if (x==-1) break; y=x+1;}for (int j=1;j<=n;j++)if (v[v.size()-1]==a[j].id||v[v.size()-1]==a[j].label){int k,now,count;now=j; count=a[j].count;for (k=v.size()-2;k>=0;k--)if (!find(now,count,v[k]))break;if (k==-1) ans.push_back(j);}cout<<ans.size()<<" ";for(int j=0;j<ans.size();j++)cout<<ans[j]<<" ";cout<<endl;}return 0;
}

csp官网题目——元素选择器相关推荐

  1. c语言欧几里得算法求素数,jrs直播(无插件) -官网

    题目: 最近完成的一个项目是参加第九届英特尔杯的参赛作品. 这个参赛作品的名称叫做Training4Fun,是一个台球综合训练jrs直播(无插件) -官网系统.我们的选题动机:台球辅助训练缺乏.我们可 ...

  2. 记一次 leetcodeEdit Pro 利用力扣官网调试(二叉树题目)的代码 进行的成功调试

    文章目录 步骤 我在大包里面新建了一个类 TreeNode 这样所有二叉树的题目都能识别到TreeNode这个类(以后不需要重复写了) 把 main方法以及其他用到的函数粘贴到 class Solut ...

  3. 去除android浏览器下a/input等元素获得焦点时高亮边框,大发黄金版手机登陆-官网首页...

    生成 [九]注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver). C - Game with Chips.Educa ...

  4. c语言面试题(感觉比较好的题目),天博集团官网 -官方网站

    Android 1.Period final修饰,线程安全,ISO-8601日历系统中基于日期的时间量,例如2年3个月4天. 主要属性:年数,月数,天数. /** * The number of ye ...

  5. 超强的苹果官网滚动文字特效实现

    每年的苹果新产品发布,其官网都会配套更新相应的单页滚动产品介绍页.其中的动画特效都非常有意思,今年 iPhone 14 Pro 的介绍页不例外. 最近,刚好有朋友问到,其对官网的一段文字特效特别感兴趣 ...

  6. Vue快速入门一:官网、下载、定义变量

    Vue官网:Vue.js - 渐进式 JavaScript 框架 | Vue.js Vue2中文文档:Vue.js介绍 - Vue.jsVue.js Vue3中文文档:快速上手 | Vue.js Vu ...

  7. Vue2官网使用及简介

    官网地址 中文官网地址:https://cn.vuejs.org/      英文官网地址:https://vuejs.org/ 文档使用 Vue定义 一套用户构建用户界面的渐进式JavaScript ...

  8. Outline,Input样式的设置,小米官网搜索框

    在做小米项目右上角的搜索框的时候,发现了该问题,现总结如下: outline outline和border类似,只不过outline不占用空间,而border占用空间 #box1{width: 300 ...

  9. tailwindcss 官网(六)定制:配置( `tailwind.config.js `、-p、important、核心插件、`resolveConfig`)、主题 `theme` 配置

    tailwindcss 官网(六)定制:配置( tailwind.config.js.-p.important.核心插件.resolveConfig).主题 theme 配置 文章目录 tailwin ...

最新文章

  1. Android Studio教程10-Intent的详细使用
  2. Cisco3560交换机enable密码破解和恢复出厂设置
  3. boost::hana::when用法的测试程序
  4. [-] Handler failed to bind to x.x.x.x:port排错
  5. 关于布地奈德的副作用
  6. Intellij IDEA 快捷键整理(dyCopy)
  7. java web判断服务器是否是本机
  8. 如何设置允许PP视频访问相机
  9. oracle安装后怎么用plsql连接,oracle11g安装和使用PLSQL连接
  10. 这4款甘特图绘制工具,都是老原精心整理
  11. 砥砺前行 智领未来 | 美格智能2022年半年度经营管理会议顺利召开
  12. pwm调速流程图小车_求智能小车 PWM调速?
  13. “感动中国”2012年度人物颁奖词
  14. 使用frp进行内网穿透
  15. 基于QT(c++)的家庭财务管理系统
  16. P4711 「化学」相对分子质量
  17. 数控加工仿真系统 - FANUC OI 铣床编程笔记(下)
  18. Arduino IDE环境下WeMos D1开发板引脚定义和映射
  19. Spark Mllib里的分布式矩阵(行矩阵、带有行索引的行矩阵、坐标矩阵和块矩阵概念、构成)(图文详解)...
  20. C#程序未能找到引用的组件VBIDE解决过程

热门文章

  1. 福利 | 精选大咖演讲干货、精华笔记、课件分享(附PPT/视频)
  2. JS获取当前时间(24小时制)
  3. 关于5G NR NSA(非独立组网)
  4. ISP图像调试工程师——宽动态增强(熟悉图像预处理和后处理技术)
  5. ***原理详解(中篇)
  6. el-upload 上传图片、编辑时图片回显以及后续提交问题
  7. php日志库—monolog
  8. .NetCore数据库依赖注入
  9. linux打开pdf是乱码,解决方法
  10. 【Ubuntu】腾讯QQ安装