CCF 2018-9-3 元素选择器

2023-05-16

题目链接:元素选择器

题目描述:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
思路:
模拟题,简化版的元素选择器,首先创建储存每一层的节点,节点中包括标签,id属性和缩进。由于对于标签的大小写不敏感,因此统一将标签设置为小写,用到了库函数tolower进行转换。设置search函数用来查找在数组中缩进小于level且标签或属性等于s的元素,如果有就返回true,否则返回false。
主函数中用p1,p2分别记录标签和属性的位置,level记录缩进,然后统一标签为小写。然后对m个选择器进行查询,用两个vector数组分别记录查询过程和结果。

总结:
模拟题的东西就是涉及到很多思路和很多知识点,需要全方位思考才能得出结果。同时不能产生畏惧心理,不然就直接劝退了。

代码:

#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
const int maxn=110;
struct node{
    string lable,id; 
    int level;
};
node k[maxn];
int n,m,p1,p2,level,length;
string str;
void change(string &s){
    for(int i=0;i<s.length();i++)
        s[i]=tolower(s[i]);
}
bool search(node k[],int &start,int &level,string s){
    for(int i=start;i>=1;i--)
        if(k[i].level<level){
            level=k[i].level,start=i;
            if(s==k[i].lable||s==k[i].id) 
                return true; 
        }
    return false;
}
int main(){
    cin>>n>>m;
    getchar();
    for(int i=1;i<=n;i++){
        getline(cin,str);
        p1=-1,p2=-1,level=0; 
        for(int j=0;j<str.length();j++)
            if(str[j]=='.')
                level++;
            else if(p1==-1&&str[j]!='#')
                p1=j;
            else if(str[j]=='#')
                p2=j;
        k[i].level=level;
        if(p2==-1){
            k[i].lable=str.substr(p1);
            k[i].id="";
        }
        else{
            k[i].lable=str.substr(p1,p2-p1-1);
            k[i].id=str.substr(p2);
        }
        change(k[i].lable);
    }
    for(int i=0;i<m;i++){
        char ch[maxn];
        vector<string>svec; 
        vector<int>ivec;
        gets(ch); 
        char *op=strtok(ch," ");
        while(op){
            svec.push_back(op);
            op=strtok(NULL," ");
        }
        length=svec.size();
        for(int j=0;j<length;j++) 
            if(svec[j][0]!='#')
                change(svec[j]);
        for(int j=1;j<=n;j++)
            if(svec[length-1]==k[j].id||svec[length-1]==k[j].lable){
                int pp=j,level=k[j].level,l=length-2; 
                for(;l>=0;l--)
                    if(!search(k,pp,level,svec[l]))
                        break;
                if(l<0)
                    ivec.push_back(j); 
            } 
        cout<<ivec.size();
        for(int j=0;j<ivec.size();j++)
            cout<<" "<<ivec[j];
        cout<<endl;
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CCF 2018-9-3 元素选择器 的相关文章

  • VMware的Debian11如何删除磁盘文件,并在扩充原有磁盘

    删除原有磁盘分区 1 在 虚拟机 gt 设置 中 xff0c 选中需要删除的磁盘分区文件 xff0c 点击 移除 xff1b 2 如果此磁盘已设置开机自动挂载 xff0c 需要取消挂载 xff1a xff08 1 xff09 在 root
  • 计算机视觉思维导图

    计算机视觉思维导图 最近整理的计算机视觉思维导图分享给大家 xff0c 来源于各个教学视频以及博客 xff0c 可以当做字典使用 xff0c 知道整个行业的方向及相关技术 xff0c 按照自己理解的视觉处理任务顺序排序
  • centos8安装docker错误解决

    安装出现 Problem problem with installed package buildah Last metadata expiration check 0 08 17 ago on Sat 20 Feb 2021 12 43
  • c中输入一个十进制数,输出它的八进制二进制以及十六进制

    代码 xff1a span class token macro property span class token directive keyword include span span class token string lt stdi
  • 如何删除Alibaba PC Safe Service

    如何删除Alibaba PC Safe Service Alibaba PC Safe Service是AlibabaProtect服务项目 xff0c Alibaba PC Safe Service这个东西在任务管理器里你是如论如何都关不
  • Yapi-从零搭建接口管理平台

    介绍 旨在为开发 产品 测试人员提供更优雅的接口管理服务 可以帮助开发者轻松创建 发布 维护 API xff1b 官网网址 xff1a YApi 教程 hellosean1025 github io 搭建 其实官网有明确的搭建方法 xff0
  • Sql 数据库细节全解(icelei讲sql)

    磊哥哥讲Sql 一 what who defined1 数据库whatever2 引言导入 二 database and tables guy1 Basic element project definition2 template data
  • 编写一个Shell函数检查Linux系统中某文件的权限是否小于一个值

    我编写了一个Shell函数 xff0c 使用这个函数需要传两个参数 xff1a 文件绝对路径和一个三位整数 通过这个函数可以检查文件权限是否小于等于你给定的值 submod export filepath 61 1 export maxmo
  • codeforces 1328 B. K-th Beautiful String

    题意 xff1a 就是找到第 k k k 个全排列的字符串 通过找规律 xff0c 第一个 b b b 在倒数第二位有
  • 使用python 解ccf-csp 2019-03-1小中大

    传送 问题描述 问题分析 这个题目最大值和最小值很好得到 xff0c 因为已经排好序了 xff0c 只需要判断一下是正序还是反序就可以了 xff0c 至于中位数我们得先清除它的概念 xff0c 如果不清楚 xff0c 也可以从给出来的例子判
  • ubuntu生成anaconda快捷方式

    https blog csdn net weixin 45653050 article details 105636020
  • 编码转换

    编码定义 在计算机硬件中 xff0c 编码 xff08 coding xff09 是在一个主题或单元上为数据存储 xff0c 管理和分析的目的而转换信息为编码值 xff08 典型地如数字 xff09 的过程 在软件中 xff0c 编码意味着
  • Visual Studio Code安装go插件报错

    VScode第一次跑go代码时提示The go outline command is not available Run 34 go get v github com ramya r有效解决安装方法 出现问题 xff1a Visual St
  • TCP实现服务器与客户端的连接(多线程)

    上一篇博客中 xff0c 我们用TCP实现了服务器与客户端的连接 但是有一个问题 xff0c 即一个客户端在和服务器交互时 xff0c 其他客户端无法连接 xff0c 为解决这一问题 xff0c 我们将服务器端改造为线程池的版本 xff08
  • 【GIT】在kali linux上安装git与码云提交|kali安装wps

    xff11 安装git kali自带 xff0c xff08 apt get install git xff09 2 添加git服务用户 xff08 这一步不知道有没有用也输入了 xff0c 只是有点问题 xff09 useradd git
  • Windows10系统重装之U盘安装

    1 准备工作 操作系统 xff1a Windows 10 安装工具 xff1a U盘安装 程序下载 xff1a MediaCreationTool 链接 xff1a https pan baidu com s 1GTnFze86sDjRnV
  • ubuntu18.04安装cuda和cudnn

    一 安装 cuda 1 首先查看自身电脑最高支持的cuda版本为多少 xff0c 在终端输入以下指令 nvidia smi 可以看到我的最高支持 cuda 11 4 2 打开英伟达官网 下载官方cuda 此处我下载的是cuda 11 0 3
  • 批处理打开指定路径下的所有文件

    需求 xff1a 批处理打开指定路径下的所有文件 前提 xff1a 默认各位同学已经熟悉常用的各种批处理命令 xff0c 本文仅对涉及到的批处理命令做简单的介绍 xff0c 有需要进一步学习 xff0c 可查阅网上其它资料 也可通过CMD命
  • 系统调用的概念及原理

    系统调用与内核函数 内核函数与普通函数形式上没有什么区别 xff0c 只不过前者在内核实现 xff0c 因此要满足一些内核编程的要求 系统调用是用户进程进入内核的接口层 xff0c 它本身并非内核函数 xff0c 但它是由内核函数实现的 x
  • CMAKE编译ORB-SLAM2时,报错找不到Eigen3,报错Eigen3 found!之类错误(已解决)

    当编译执行到 build sh文件时 xff0c 报错Eigen3 found xff01 之类错误 解决方法 xff1a 在主文件夹下直接查找FindEigen3 cmake文件 然后把它复制到报错的CMakeLists txt对应的路径

随机推荐

  • Python爬虫---王者荣耀(最详细)

    Python爬虫 王者荣耀 最详细 首先来到王者荣耀的首页 点击游戏壁纸进去 xff0c 就会看到这些图片 xff0c 大致看了一下 xff0c 是我们想要的东西 点开图片看看能不能找到什么规律 可以看见每张图下面都有六个分辨率的选项 xf
  • hypermesh分析流程

    对于CAE初学者来说 xff0c hypermesh是一个很适合的工具 xff0c 既可以作为其他分析软件的输入 xff0c 自带的求解器也能取得很精确的结果 xff0c 本文是作者的一些实用心得 xff0c 全是干货 学习一个软件时 xf
  • PVE7.1安装Jellyfin几个问题

    按网络资料显示 xff0c 最好是在LXC安装 一 模板问题 直接创建CT xff0c 模板里是空的 xff0c 所以需要在pve local xff08 pve xff09 模板里 xff0c 找到相关模板 xff08 如ubuntu20
  • Mybatis-Plus代码生成器(generator)

    在写代码的时候 xff0c 使用mybatis plus的代码生成器可以帮助我们减少很多工作量 xff0c 详细说明可以看官方文档https baomidou com pages 779a6e 在使用之前需要把包给导一下 xff0c gen
  • TT 的神秘礼物

    题目 TT 的神秘礼物 题意 xff1a TT 是一位重度爱猫人士 xff0c 每日沉溺于 B 站上的猫咪频道 有一天 xff0c TT 的好友 ZJM 决定交给 TT 一个难题 xff0c 如果 TT 能够解决这个难题 xff0c ZJM
  • computed和watch

    computed 1 什么是computed xff1f computed是计算属性 类似于方法 xff0c 但和methods不同 xff0c methods每次调用时会重新执行函数 xff0c 而computed在其内部变量不变或其返回
  • Anaconda3 2021.05(64bit)安装图文教程

    目录 little背景安装包下载安装 little背景 有朋友说下学期要学Python xff0c anaconda的jupyter notebook这么方便不得不安利一下 xff0c 顺手写个博客记下来 本文如有问题请多指教 xff01
  • 数据结构第三章 栈和队列题目答案

    一 选择题 1 xff0e 栈结构通常采用的两种存储结构是 xff08 A xff09 A xff0e 顺序存储结构和链表存储结构 B xff0e 散列方式和索引方式 C xff0e 链表存储结构和数组 D xff0e 线性链表结构和非线性
  • 博客模板

    题目链接 xff1a 题目描述 xff1a Input xff1a Output xff1a Sample Input xff1a Sample Output xff1a Hint xff1a 思路 xff1a 总结 xff1a 代码 xf
  • 程序设计思维与实践 Week9 作业 C-长凳问题(签到题)

    题目链接 xff1a C 长凳问题 题目描述 xff1a SDUQD 旁边的滨海公园有 x 条长凳 第 i 个长凳上坐着 a i 个人 这时候又有 y 个人将来到公园 xff0c 他们将选择坐在某些公园中的长凳上 xff0c 那么当这 y
  • 程序设计思维与实践 Week11 作业 必做题 A-蒜头君买房子

    题目链接 xff1a A 蒜头君买房子 题目描述 xff1a 蒜头君从现在开始工作 xff0c 年薪N万 他希望在蒜厂附近买一套60平米的房子 xff0c 现在价格是 200万 假设房子价格以每年百分之K增长 xff0c 并且蒜头君未来年薪
  • 程序设计思维与实践 Week11 作业 必做题 B-蒜头君列队

    题目链接 xff1a B 蒜头君列队 题目描述 xff1a 蒜头君的班级里有n 2个同学 xff0c 现在全班同学已经排列成一个n n的方阵 xff0c 但是老师却临时给出了一组新的列队方案 为了方便列队 xff0c 所以老师只关注这个方阵
  • 程序设计思维与实践 Week11 作业 必做题 C-简单密码

    题目链接 xff1a C 简单密码 题目描述 xff1a Julius Caesar 曾经使用过一种很简单的密码 对于明文中的每个字符 xff0c 将它用它字母表中后 55 位对应的字符来代替 xff0c 这样就得到了密文 比如字符 A 用
  • 【蓝桥杯单片机3】共阳数码管的静态显示

    本节要完成的实验现象 xff1a 8个数码管分别单独依次显示0 xff5e 9的值 xff0c 然后所有数码管一起同时显示0 F的值 xff0c 如此往复 训练重点 xff1a 1 弄清楚数码管的段码与显示数值之间关系 2 共阳数码管的基本
  • 程序设计思维与实践 CSP-M3 B-消消乐大师——Q老师

    题目描述 xff1a Q老师是个很老实的老师 xff0c 最近在积极准备考研 Q老师平时只喜欢用Linux系统 xff0c 所以Q老师的电 脑上没什么娱乐的游戏 xff0c 所以Q老师平时除了玩Linux上的赛车游戏SuperTuxKart
  • 程序设计思维与实践 Week12 作业 必做题 C-东东扫寝室

    题目链接 xff1a C 东东扫寝室 题目描述 xff1a 东东每个学期都会去寝室接受扫楼的任务 xff0c 并清点每个寝室的人数 每个寝室里面有ai个人 1 lt 61 i lt 61 n 从第i到第j个宿舍一共有sum i j 61 a
  • 程序设计思维与实践 Week13 作业 必做题 A-TT 的神秘任务1

    题目链接 xff1a A TT的神秘任务1 题目描述 xff1a 这一天 xff0c TT 遇到了一个神秘人 神秘人给了两个数字 xff0c 分别表示 n 和 k xff0c 并要求 TT 给出 k 个奇偶性相同的正整数 xff0c 使得其
  • 程序设计思维与实践 Week13 作业 必做题 C-TT 的奖励

    题目链接 xff1a C TT的奖励 题目描述 xff1a 在大家不辞辛劳的帮助下 xff0c TT 顺利地完成了所有的神秘任务 神秘人很高兴 xff0c 决定给 TT 一个奖励 xff0c 即白日做梦之捡猫咪游戏 捡猫咪游戏是这样的 xf
  • 程序设计思维与实践 Week15 实验 B-ZJM的本领

    题目链接 xff1a B ZJM的本领 题目描述 xff1a 众所周知 xff0c ZJM 住在 B 站 这一天 Q 老师来找 ZJM 玩 xff0c ZJM 决定向 Q 老师展现一下自己快速看番的本领 ZJM 让 Q 老师任意挑选了一部番
  • CCF 2018-9-3 元素选择器

    题目链接 xff1a 元素选择器 题目描述 xff1a 思路 xff1a 模拟题 xff0c 简化版的元素选择器 xff0c 首先创建储存每一层的节点 xff0c 节点中包括标签 xff0c id属性和缩进 由于对于标签的大小写不敏感 xf