#include<iostream>
#include<vector>
#include<string>
#include<sstream>
#include<cctype>
#include<deque>
using namespace std;
int point(string s) {
int ans = 0;
for (auto&ch : s) {
if (ch == '.') ++ans;
else break;
}
return ans;
}
void all_tolow(string& s) {for (auto&ch : s) ch = tolower(ch);}
bool matchsign(string s,string q) {
stringstream ss(s);
string t;
getline(ss, t, ' ');
all_tolow(t);
all_tolow(q);
return t == q;
}
bool matchid(string s, string q) {
int f =s.find('#');
if (f != -1) {
return s.substr(f) == q;
}
return false;
}
bool match(string s, string q) {return q.front()=='#'? matchid(s, q): matchsign(s, q);}
struct ac {
string c;
int level;
ac(string a, int b) {
c = a;
level = b;
}
};
int main() {
int n, m;
cin >> n >> m;
cin.get();
vector<vector<string>> content(n);
deque<ac> temp;
int last = -1;
for (int i = 0; i < n; ++i) {
string s;
getline(cin, s);
int now = point(s) / 2;
while (now <= last) {
if (temp.size()) {
temp.pop_back();
last = temp.back().level;
}
}
temp.emplace_back(ac(s.substr(now * 2), now));
last = now;
for (int j = 0; j < temp.size(); ++j) content[i].emplace_back(temp[j].c);
}
for (int i = 0; i < m; ++i) {
string s;
getline(cin, s);
string temp;
vector<string> q;
vector<int> ans;
stringstream ss(s);
while (getline(ss, temp,' ')) {
if (temp == "") continue;
q.emplace_back(temp);
}
if (q.size() == 1) {
for (int j = 0; j < n; ++j)
if (match(content[j].back(), q[0])) ans.emplace_back(j + 1);
}
else {
for (int j = 0; j < n; ++j) {
if (match(content[j].back(), q.back())) {
int count = 0, k = 0;
while (count < q.size() - 1 && k < content[j].size() - 1) {
if (match(content[j][k], q[count])) ++count;
++k;
}
if (count == q.size() - 1) ans.emplace_back(j + 1);
}
}
}
cout << ans.size() << " ";
for (int j = 0; j < ans.size(); ++j) cout << ans[j] << " ";
cout << endl;
}
}
相关推荐
CCF历年真题整理【已更新至202104】
说明:本文持续更新,若长时间未更新,请评论催催我。 以下题目均来自cspro.org,点击进入测试页面,侵删歉。 部分题目我已经解决,并给出参考代码。然而有些我还没有尝试解决,但先把题目贴给大家,大家可以自行去官网练习。 如果对我的解法有疑问,可以联系我一起交流学习。CCF交流学习QQ群:696037138 需要了解CCF的常见问题,请看这篇博客:CCF考前必看(最后更新时间:2019.10.03...
week15——实验(月模拟题4:CSP201809 03)
目录元素选择器 :问题描述题目简述问题分析解题思路参考代码心得体会 元素选择器 : 问题描述 题目简述 问题分析 解题思路 本题要求实现3个不同类型的html元素选择器。实际上,通过分析可以发现,这三种选择器可以统一成一种情况,因为如果将“#”看成匹配的一部分的话,标签选择器和id选择器是一样的,而后代选择器,相当于一次选取多个有包含顺序的标签,因此,其本质上是一个标签选择器。因此,这三种选择器用一种方法即可实现。我的思路是先从最低级的元素开始匹配,当匹配到该元素时,如果是标签和id选择器,该搜索过
从零开始的BW(五) 外部系统供数之OData测试
5、激活添加的服务,如提示下图中的激活失败,根据生成URI在事务代码SICF目录中找到对应的服务,设置超时时间,设置完之后重新激活即可,详情可参考SAP note 1986626。如果刚才设置BY Odata的query在这没有显示,SE38执行程序EQ_RS_AUTOSETUP,选中需要生成服务的query,生成服务后再去添加服务。测试get方法,URI中默认的参数是?4、事务代码/IWFND/MAINT_SERVICE中添加服务,如果提示用户不再登陆,在事务代码前加上/O或者/N即可。
CCF-CSP认证历年真题解
CSP认证考什么怎么考? CCF计算机职业资格认证的每一道试题都十分经典,覆盖现实世界中方方面面的问题。这个历年试题解主要使用C/C++语言编写,将逐步增加Python和Java的解题程序。程序中附有注释,力求解题思路清晰简洁,值得珍藏与模仿。 逐题改写过程中,富文本编辑器写的博客将全部用Markdown编辑器改写。改写的第一题,都增加了Python和Java的解题程序。 2021.04第22次: CCF202104-1 灰度直方图(100分)【计数】 CCF202104-2 邻域均值(100分.
【机器人】机械臂控制入门技术栈分享
机械臂控制入门技术栈分享1.前言2.机器人控制入门技术栈2.1.空间描述和变化2.2.运动学分析2.3.动力学建模2.4.控制入门学习3.进阶部分3.1.机器人参数辨识3.2.非线性控制3.3.现代机器人描述方法:指数坐标4.总结 1.前言 今天看到优快云上有个分享个人技术栈的活动,虽然我不是一个正规的程序员,也不搞前端、后端这些,但我一直在优快云上通过写博客对我的学习进行总结,于是我突发奇想,不如我也写一下我的个人技术栈,针对机械臂控制入门的,因为我水平也不高,所以本文内容也许不够饱满,也不够准确,但
别再只会用串口助手了!手把手教你用手机App调试HC-05蓝牙模块(STM32F103实战)
本文详细介绍了如何利用手机App调试HC-05蓝牙模块与STM32F103的无线连接,突破传统串口助手的限制。通过实战指南,开发者可以掌握移动性测试、实时监控和快速验证等高效调试技巧,优化蓝牙透传的稳定性和性能。
201709-3 JSON查询
问题描述 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,可以用来描述半结构化的数据。JSON 格式中的基本单元是值 (value),出于简化的目的本题只涉及 2 种类型的值: * 字符串 (string):字符串是由双引号 " 括起来的一组字符(可以为空)。如果字符串的内容中出现双引号 ",在双引号前面加反斜杠,也就是用 \" 表...
从零搭建A股量化交易系统:开源框架选型与实战部署指南
本文详细介绍了从零搭建A股量化交易系统的完整流程,重点分析了开源框架VNPY和QMT的选型与实战部署。内容涵盖系统架构设计、策略开发、性能优化及实盘过渡方案,为开发者提供了一套完整的A股实盘量化交易解决方案,助力高效构建稳定可靠的量化交易系统。
2019安徽省程序设计竞赛 D自驾游 题解
从无编程比赛经验,程序设计艺术与方法作业所迫,采用方法十分普通,还请进来的大佬莫要笑话 原题 描述 P 省有 N 个城市,编号分别为 1…N,烦烦家住 1 号城市,N 号城市是省会。P省的交通非常发达,有 M 条有向的高速公路连接这 N 个城市,第 i 条高速公路(1<=i<=M)从城市 ui 连向城市 vi。这天,烦烦想自己开车从家前往省会城市游玩。烦烦是个做事很细致的人,为了有备无患,她决定同时开着 heroMap 和 amap 这两个不同的导航软件来帮助自 己完成这次旅程。这两个导航软件
SpringCloudGateway网关高频20个面试题整理
Spring Cloud Gateway 是基于 Spring 5、Project Reactor 和 Spring Boot 2 构建的 API 网关,提供动态路由、监控、弹性、安全等核心功能。Spring Cloud Gateway 是 Spring Cloud 生态中的 API 网关,用于微服务架构中的请求路由、负载均衡、限流、鉴权等。实现@Component@Override// 逻辑处理。
Xilinx Aurora 8B/10B IP核详解和仿真
Xilinx Aurora 8b/10b IP核的详解,以及使用与仿真示例,对IP核的配置和如何仿真有非常详细的说明,除了对IP核官方文档的内容进行了解析以外,还对GTX引脚的选择等比较容易混淆和不好理解的地方进行了说明。最后对IP核的仿真运行进行了STEP BY STEP 的说明,对仿真的结果也进行了简要的说明。 该文档对Xilinx FPGA和ZYNQ SOC下 AURORA 8B/10B IP核的使用提供了一个快速上手的指导。
2020全国高校计算机能力挑战赛C++决赛代码分享
样例均过 1.模拟 #include<iostream> #include<string> #include<vector> #include<map> #include<set> #include<stack> #include<unordered_map> #include<unordered_set> #include<algorithm> #include<iomanip> usi
K-GAS解读(08)
大众kgas标准,大众及其供应商kgas
C++分数表达式加减运算实现
C++11虽然有radio库,但用起来也没那么方便 string fractionAddition(string expression) { expression.push_back('+'); vector<int> fenzi; vector<int> fenmu; int i=expression[0]=='-'?0:-1,j=0; while(j<expression.size()){
【工业相机】【深度4】线扫描相机 - 选型实践
前言: 在工业相机的深度应用的前三节里面,针对工业相机的选型、参数、应用计算等做了一些说明。期中,在深度3里面,在说明工业相机在速度场景下的应用的时候,专门开了一节介绍线扫描相机行频速度的计算公式和镜头的选型的大致说明,感觉说的还是不够透彻,切应用举例也不充分,这里特别开一个章节,基于线扫描相机的特点对比面阵相机的特点进行比较详细的说明,尤其对线扫描相机的选型实践,尤其是线扫描相机的分辨率选择计算、行频选择计算进行了充分的说明和计算说明,希望能够给用到线扫描工业相机的同学给予一定的参考: 阐述: 在编
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
【leetcode451】根据字符出现频率排序,哈希表加优先队列解法
题文 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 样例 样例1 输入: “tree” 输出: “eert” 解释: 'e’出现两次,'r’和’t’都只出现一次。 因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。 样例2 输入: “cccaaa” 输出: “cccaaa” 解释: 'c’和’a’都出现三次。此外,"aaaccc"也是有效的答案。 注意"cacaca"是不正确的,因为相同的字母必须放在一起。 样例3 输入: “Aabb” 输出: “bb
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
翻转字符串里的单词【stringstream解法】
题文 给定一个字符串,逐个翻转字符串中的每个单词。 说明: 无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 样例 输入: " hello world! " 输出: “world! hello” 输入: “a good example” 输出: “example good a” 代码 string reverseWords(string& s) {
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
leetcode640求解方程C++代码
class Solution { public: string solveEquation(string equation) { int x=0,num=0,t=1; int i=-1,j=0; equation.push_back('+'); while(j<equation.size()){ // cout<<"j"<<j<<endl; if(e
简化路径【栈模拟解法】
题文: 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
【精选】一篇文章带你搞懂排列算法题【面向面试】
一说起排列与组合,很多人会想到回溯法,但回溯法的适用状态空间大小很小,即使是剪枝高手在面对n>20时的题目也会望洋兴叹,另觅它径。 不过这篇文章还是先从回溯讲起,再慢慢转入数学的天堂。 排列型题目的回溯法都有一个板子: void backtrace(int n) { 递归出口或中间处理部分 for (int i = 0; i < n; ++i) { if (未选) { 标记选中 backtrace(n); 取消标记选中; } } } 借着这个板子可以轻松搞定本文
CSS 网格布局(Grid)入门:从概念到网格轨道
网格轨道由(列轨道)和(行轨道)定义。它们的值是一组轨道尺寸,用空格分隔,每个值对应一条轨道。
CSS 选择器 & 优先级
本文系统讲解CSS选择器语法与权重规则:通配符*、元素/类/ID选择器、属性选择器及其拓展用法;组合选择器包括后代、子代、兄弟关系;伪类(如:hover)与伪元素(如::before)区分使用;重点强调权重优先级:!important > 行内样式 > ID > 类/伪类 > 元素/伪元素 > 通配符,同级以书写顺序为准,继承不可覆盖。提醒避免误区:nth-child按所有子元素计数,非仅同类标签;避免滥用!important;推荐优先使用class而非id写样式。
CSS 定位布局:固定定位与粘性定位详解
fixed相对视口定位,脱离文档流,适合始终固定的元素,如导航栏、悬浮按钮。sticky是相对定位与固定定位的结合,保留文档流占位,适合滚动吸附效果,如表头吸顶、目录跟随。两者都容易受到祖先元素transform和overflow的影响,排查问题时优先检查这两点。实际开发中,根据"是否需要始终固定"和"是否需要保留占位"来选择合适的方式。掌握这两种定位方式,能让你在实现吸顶导航、悬浮操作、滚动跟随等交互时更加得心应手。
CSS 定位布局与 z-index 叠放次序详解
层叠上下文(Stacking Context)是一个独立的「三维空间」,内部元素的z-index只在同一个上下文内比较。子元素的z-index再大,也无法突破父级上下文所处的层级。根元素html;position为且z-index不为auto;或sticky(现代浏览器);opacity小于 1;transformfilter等不为none;;flex/grid子项且z-index不为auto。position决定元素是否脱离文档流以及定位参照物;z-index。
CSS display 模式转换详解
display属性是 CSS 布局的基石。掌握blockinlineflexgrid等常见取值,并理解它们之间的转换规则,能够帮助我们更灵活地控制页面结构。在实际开发中,建议优先使用flex和grid完成布局,仅在必要时才通过display转换处理细节问题。
12万+



被折叠的 条评论
为什么被折叠?



