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

学生怎么制作网站南宁seo全网营销

学生怎么制作网站,南宁seo全网营销,深圳注册公司地址有什么要求,青岛疫情今天最新情况一、题目 1、题目描述 给定一个层数为 n n n 的满二叉树,每个点编号规则如下: 具体来说,二叉树从上往下数第 p p p 层,从左往右编号分别为:1,2,3,4,…, 2p-1。 给你一条从根节点开始的路径&#xff0…

一、题目

1、题目描述

给定一个层数为 n n n 的满二叉树,每个点编号规则如下:
在这里插入图片描述
具体来说,二叉树从上往下数第 p p p 层,从左往右编号分别为:1,2,3,4,…, 2p-1

给你一条从根节点开始的路径,想知道到达的节点编号是多少?

例如,路径是 r i g h t − l e f t right - left rightleft,那么到达的节点是 1 − 2 − 3 1-2-3 123,最后到了三号点,如下图所示:
在这里插入图片描述
输入格式:

第一行输入两个整数 n n n q q q n n n 表示完全二叉树的层数, q q q 代表询问的路径数量。

接下来 q q q 行,每行一个字符串 S S S S S S 只包含字符 { 'L','R'},L 代表向左,R 代表向右。

输出格式:
输出 q q q 行,每行输出一个整数,代表最后到达节点的编号。

样例输入

3 6
R
L
LL
LR
RL
RR

样例输出:

2
1
1
2
3
4

说明:
2 ≤ n ≤ 20 , 1 ≤ q ≤ 1 0 3 , 1 ≤ ∣ S ∣ < n 2 \le n \le 20, 1 \le q \le 10^3, 1 \le |S| \lt n 2n20,1q103,1S<n

完全二叉树: 一个二叉树,如果每层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为 k k k,且节点总数为 2 k − 1 2^{k-1} 2k1,则它就是满二叉树。

2、基础框架

#include <iostream>
using namespace std;int main()
{   // 请在此输入您的代码return 0;
}

3、原题链接

数树数

二、解题报告

1、思路分析

解法1:暴力解

建立起一棵 n n n 个节点的完全二叉树,然后标号,暴力走路径。

时间复杂度 O ( 2 n + ∑ ∣ S ∣ ) O(2^n + \sum|S|) O(2n+S)

解法2:计算

利用满二叉树的性质,第 i i i 层的节点数量是 2 i − 1 2^{i-1} 2i1 个。

在一条路径上,实际上与 n n n 并无关系,只与最后到达的层数有关,所以只与路径的长度有关,维护当前点的编号 i d id id ,初始值为 1 1 1 ,如果路径长度是 p p p ,那么最后到达的层数就是 p p p ,当前所在的层数是 q q q ,那么当前节点的子树的叶节点总数就是 2 p − q 2^{p-q} 2pq

如果向左,则到达下一层,并且 i d id id 不变;如果向右,就是跨越了 2 p − q − 1 2^{p-q-1} 2pq1 个节点(当前节点的左树的节点全部排除), i d id id 加上 2 p − q − 1 2^{p-q-1} 2pq1

时间复杂度: O ( ∑ ∣ S ∣ ) O(\sum |S|) O(S)

2、代码详解

  • 暴力解
#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>using namespace std;typedef long long ll;
const int N = 2e6 + 100;
const int MOD = 998244353;int L[N], R[N], val[N];
int depVal[N];
int op = 1;void build(int u, int dpt) {val[u] = ++depVal[dpt];if (dpt == 20) {return;}L[u] = ++op;build(L[u], dpt + 1);R[u] = ++op;build(R[u], dpt + 1);
}
char s[40];void dfs(int u, char *c) {if (*c == '\0') {cout << val[u] << '\n';return;}if (*c == 'L') {dfs(L[u], c + 1);} else {dfs(R[u], c + 1);}
}void sol() {build(1, 1);int n, q;cin >> n >> q;while (q--) {cin >> s;dfs(1, s);}
}int main() {// ios::sync_with_stdio(0);// cin.tie(0);// cout.tie(0);int T = 1;// cin >> T;while (T--) {sol();}exit(0);
}
  • 计算法
#include <iostream>
using namespace std;int main()
{   int n;int q;cin >> n;cin >> q;string s;while (q--) {cin >> s;int len = s.size();int ans = 1;for (int i = 0; i < len; i++) {if (s[i] == 'R') {ans += (1 << (len - i - 1)); //左树上的节点跳过}   }cout << ans << endl;}return 0;
}
http://www.dinnco.com/news/22915.html

相关文章:

  • 网站推广建设加盟seo优化推广技巧
  • 环球资源外贸网中文版seo网站关键词优化价格
  • 漯河哪个网站推广效果好百度推广官网入口
  • 山西省政府网站建设的公司seo排名规则
  • 网站制作的动画怎么做的天津关键词排名提升
  • 制作网站软件作品广州网站设计
  • 怎么开自己的网站女教师遭网课入侵直播录屏曝光i
  • 为什么要做手机网站开发宁波受欢迎全网seo优化
  • 网站如何做sem网站建设的整体流程有哪些
  • 广西网站怎么制作seo按照搜索引擎的什么对网站
  • 宜兴做阿里巴巴网站营销软文100字
  • 中山短视频seo教程优化培训内容
  • 青县网站建设网址大全名称
  • 免费开商城网站吗东莞快速优化排名
  • asp做的手机网站国内可访问的海外网站和应用
  • 怎样把自己做的网站放到网上建立公司网站需要多少钱
  • 遵义网站开发百度搜不干净的东西
  • 关于网站开发技术东莞网站建设推广品众
  • django做网站比较容易营销网站建设选择
  • 重庆建设工程信息网安全监督特种人员一大泽山seo快速排名
  • 网站左侧导航栏设计广州企业网站建设
  • 电商网站建设 问题 心得体会中央新闻频道直播今天
  • 哪里有做网站设计个人免费自助建站网站
  • 聚享游网站如何做推广企业网站推广技巧
  • 哪些网站首页做的好超云seo优化
  • 公司网站建设济南兴田德润地址泰安网站制作推广
  • 学网站建设前途上海网站seo快速排名
  • 助邦建筑工程网营销排名seo
  • 瑞安自适应网站建设网站查询工具seo
  • 17网站一起做网店河北海南快速seo排名优化