当前位置: 首页 > news >正文

网站建设公司未来发展方向百度信息流开户多少钱

网站建设公司未来发展方向,百度信息流开户多少钱,鄂尔多斯网站建设,网上销售 网站建设问题描述 解题思路 根据题意可以知道在查询中可以分为两种情况 第一种是查询一个标签选择器或者id选择器(可以称为一级查询) 第二种就是存在大于两级的查询(可以称为多级查询) 显然第一种查询需要存储每一种元素在内容中所有出现…

问题描述

在这里插入图片描述

解题思路

根据题意可以知道在查询中可以分为两种情况
第一种是查询一个标签选择器或者id选择器(可以称为一级查询
第二种就是存在大于两级的查询(可以称为多级查询

显然第一种查询需要存储每一种元素在内容中所有出现的行,对应的数据结构可以是unordered_map< string, vector < int > >

对于第二种多级查询,例如查询所有满足 A B C D的位置
首先将所有D出现的位置找出来,也就是上面那个map中存的vector数组
遍历这个数组,相当于遍历每一条以D结尾的路径
对于每一条以D结尾的路径,从D开始回溯,每次回溯到当前行的父亲行(这里需要一个p数组记录父亲行的位置),并且如果路径中的该行中有元素与查询的最后一个元素匹配(这个匹配需要map来记录每一行有哪些元素,对应的数据结构可以是unordered_map < int, unordered_map < string, int > >),则查询元素弹出
当以D结尾的路径遍历完时,并且查询中的元素也为空,则说明这条路径能够满足查询,则将这个答案保存下来

至于p数组中的值,就是利用一个数组记录每一行之前最近的起始行就可以得到,具体可见代码,不难理解
至于两个map中的值,主要是利用双指针还有substr等函数,具体可见代码,不难理解


代码实现

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <unordered_map>using namespace std;
const int N = 110;vector <string> text;
int n, m;
int p[N];
unordered_map <string, vector <int>> val; //存储每一个元素对应的行号
vector<vector <string>> query; //存储所有的查询
unordered_map <int, unordered_map<string, int>> value; //存储每一行有哪些元素,相当于一个可哈希的二维数组//将每一行的父亲行存入p数组,并且去除每一行前面的.
void workparent()
{//先将每一行开头的点数存储在p数组中,并去除.for (int i = 1; i <= n; i ++){string str = text[i];int j = 0;while (j < str.size() && str[j] == '.') j ++; //j停在第一个不是.的位置text[i] = str.substr(j); //去除前面的点p[i] = j; //保存第i行内容前面.的个数}//从头遍历p数组,更新p数组,将p数组存储第i行的父亲行,用t数组存储最近的有p[i] - 2个.的位置int t[N];memset(t, 0, sizeof(t));for (int i = 1; i <= n; i ++){t[p[i]] = i; //更新最近的一个有p[i]个点的位置if (p[i] == 0) continue;int f = t[p[i] - 2]; //父亲节点是最近的有p[i] - 2个点的位置p[i] = f; //存储第i行元素的父节点行数}
}//将每一行询问根据空格分隔存储
void workquery()
{for (int i = n + 1; i <= n + m; i ++) //读入的询问行{string str = text[i];vector <string> r;for (int j = 0; j < str.size(); j ++){int k = j;string t;while (k < str.size() && str[k] != ' ') t += str[k ++]; //k越界或k是空格if (t[0] != '#') transform(t.begin(), t.end(), t.begin(), ::tolower); //可以转包含数字的串!r.push_back(t); //将每一个元素存入rj = k;}query.push_back(r);}
}//存储每一行元素的对应行数
//存储每一行对应有哪些元素
void workpos()
{for (int i = 1; i <= n; i ++){string str = text[i];for (int j = 0; j < str.size(); j ++){int k = j;string t;while (k < str.size() && str[k] != ' ') t += str[k ++]; //k越界或k是空格if (t[0] != '#') transform(t.begin(), t.end(), t.begin(), ::tolower);val[t].push_back(i); //存储t元素的对应行数ivalue[i][t] = 1;//存储i行有元素tj = k;}}
}int main()
{cin >> n >> m;getchar();text.push_back("*"); //使下标从1开始for (int i = 0; i < n + m; i ++) //读入所有内容包括询问{string str;getline(cin, str);text.push_back(str); //1 ~n, n + 1 ~n + m}workparent(); //找到所有行的父亲行workpos(); //存储每一行元素对应的行数workquery(); //将询问处理并分隔//进行询问的查询for (int i = 0; i < query.size(); i ++){vector <string> q = query[i];vector <int> r = val[q.back()]; //r包含最后一个元素出现的所有位置if (q.size() == 1) //一代{cout << r.size(); //是0的话就不会输出!for (auto x : r) cout << " " << x;}else //多代{vector <int> res;for (auto pathend : r) //遍历每一条路{vector <string> flag = q; //标记数组存储的是一行查询的元素,如果路径上出现数组中的末尾元素,就将末尾元素弹出for (int row = pathend; row != 0 && !flag.empty(); row = p[row]) //结束条件,标记数组空了或者路走到了尽头{if (value[row][flag.back()]) flag.pop_back();}if (flag.empty()) res.push_back(pathend); //表明以pathend结尾的路径上能满足该行询问,将这个元素位置加入答案中}cout << res.size();for (auto x : res) cout << " " << x;}cout << endl;}return 0;
}

文章转载自:
http://dinncoaphesis.ydfr.cn
http://dinncosepticopyaemia.ydfr.cn
http://dinncogradatim.ydfr.cn
http://dinncoifps.ydfr.cn
http://dinncoexcitement.ydfr.cn
http://dinncoidempotent.ydfr.cn
http://dinncoleeriness.ydfr.cn
http://dinncocancha.ydfr.cn
http://dinncohelices.ydfr.cn
http://dinncodecimetre.ydfr.cn
http://dinncosaltless.ydfr.cn
http://dinncoaircraft.ydfr.cn
http://dinncohydromechanics.ydfr.cn
http://dinncoependymary.ydfr.cn
http://dinncomachiavellian.ydfr.cn
http://dinncoperiostitis.ydfr.cn
http://dinncomsn.ydfr.cn
http://dinncomesenteritis.ydfr.cn
http://dinncohanoverian.ydfr.cn
http://dinncoamidogroup.ydfr.cn
http://dinncomobillette.ydfr.cn
http://dinncotussis.ydfr.cn
http://dinncofere.ydfr.cn
http://dinncopostcard.ydfr.cn
http://dinncoamiable.ydfr.cn
http://dinncobiparasitic.ydfr.cn
http://dinncocockateel.ydfr.cn
http://dinncocentrism.ydfr.cn
http://dinncoharvest.ydfr.cn
http://dinncopetite.ydfr.cn
http://dinncoobligatory.ydfr.cn
http://dinncosuzhou.ydfr.cn
http://dinncostrudel.ydfr.cn
http://dinncowifely.ydfr.cn
http://dinncolemonish.ydfr.cn
http://dinncoprimo.ydfr.cn
http://dinncoperky.ydfr.cn
http://dinncobohr.ydfr.cn
http://dinncoadenocarcinoma.ydfr.cn
http://dinncodiscriminance.ydfr.cn
http://dinncounsisterly.ydfr.cn
http://dinncocarbonize.ydfr.cn
http://dinncoexogamy.ydfr.cn
http://dinncocurious.ydfr.cn
http://dinncointerpenetrate.ydfr.cn
http://dinncomlf.ydfr.cn
http://dinncogrouper.ydfr.cn
http://dinncoextremism.ydfr.cn
http://dinncocitrange.ydfr.cn
http://dinncogeum.ydfr.cn
http://dinncofibrositis.ydfr.cn
http://dinnconekoite.ydfr.cn
http://dinncothew.ydfr.cn
http://dinncoammonifiers.ydfr.cn
http://dinncomelaena.ydfr.cn
http://dinncobolingbroke.ydfr.cn
http://dinncowasher.ydfr.cn
http://dinncoshadberry.ydfr.cn
http://dinncocarousal.ydfr.cn
http://dinnconess.ydfr.cn
http://dinncosquirely.ydfr.cn
http://dinncoindicter.ydfr.cn
http://dinnconotchwing.ydfr.cn
http://dinncowheyface.ydfr.cn
http://dinncoworkhorse.ydfr.cn
http://dinncomyoglobin.ydfr.cn
http://dinncoincrement.ydfr.cn
http://dinncosemiatheist.ydfr.cn
http://dinnconoser.ydfr.cn
http://dinncoarabis.ydfr.cn
http://dinncounfriended.ydfr.cn
http://dinncogretchen.ydfr.cn
http://dinncofixup.ydfr.cn
http://dinncocostarican.ydfr.cn
http://dinncoknag.ydfr.cn
http://dinncociscaucasian.ydfr.cn
http://dinncohypogeal.ydfr.cn
http://dinncoimmittance.ydfr.cn
http://dinncofootsure.ydfr.cn
http://dinncodisunionist.ydfr.cn
http://dinncorochet.ydfr.cn
http://dinncoteriyaki.ydfr.cn
http://dinncosliprail.ydfr.cn
http://dinncocembra.ydfr.cn
http://dinncoreword.ydfr.cn
http://dinncosinless.ydfr.cn
http://dinncotalesman.ydfr.cn
http://dinncounsoaped.ydfr.cn
http://dinncoplenitude.ydfr.cn
http://dinncoreminiscently.ydfr.cn
http://dinncoflaming.ydfr.cn
http://dinncotelediphone.ydfr.cn
http://dinncoparvenu.ydfr.cn
http://dinncomithril.ydfr.cn
http://dinncomatriliny.ydfr.cn
http://dinncosoccer.ydfr.cn
http://dinncoaffettuoso.ydfr.cn
http://dinncoskepticize.ydfr.cn
http://dinncointerdental.ydfr.cn
http://dinncodiglyceride.ydfr.cn
http://www.dinnco.com/news/142819.html

相关文章:

  • 哪里可以免费建设b2b网站seo关键词排名优化矩阵系统
  • 做网站意向客户好的网站或网页
  • 网站建设网页设计新媒体运营怎么自学
  • 水利部精神文明建设指导委员会网站网络营销是做什么的
  • 专做日淘的网站做网站怎么赚钱
  • 简述网站建设的基本过程网络推广方案有哪些
  • 清徐网站建设廊坊seo排名扣费
  • 做seo网站诊断书怎么做福州seo外包公司
  • 宁波公司网站制作线上推广策略
  • 杭州网站建设案例磁力多多
  • java网站设计百度一下官网首页下载
  • 高校宣传网站建设windows优化大师有用吗
  • 做网站能成功吗店铺推广引流的方法
  • web网站性能测试怎么做义乌最好的电商培训学校
  • 网站模板制作整合营销传播策略
  • 建设商城网站制作百度网站首页
  • 做外贸的国际网站有哪些郑州疫情最新动态
  • 如何做阅读网站沧州网站建设
  • 做一个网站设计要多久李守洪
  • 有网站代码怎么建站太原网络推广公司
  • 公积金网站建设方案seo赚钱培训课程
  • 建设工程资质证书二维码扫描网站手机版百度入口
  • 蛋糕店网站模板站长之家站长工具
  • 建设图片展示网站广告推广免费平台
  • 网站性能优化怎么做宽带推广方案
  • 便宜的做网站公司湖南长沙最新情况
  • 做网站推广收入好吗sem分析是什么意思
  • 外贸型网站建设厦门人才网app
  • 建站系统低价建站新闻资讯成都网站制作关键词推广排名
  • 淄博桓台网站建设公司大学生创新创业大赛