AT_arc049_d.[ARC049D] すわっぷしまーす

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

高桥君在旅行中参观了一棵奇特的完全二叉树,名为「すわっぷしまーす」。

这棵完全二叉树的高度是 N+1N+1,具有 2N2^N 个叶子节点。每个叶子节点从左到右依次标记为 1,2,3,…,2N1, 2, 3, \ldots, 2^N。

对于非叶子节点,位置的定义如下:位于第 ii 层(1≤i≤N1 \le i \le N)且从左边数第 jj 个节点(1≤j≤2i−11 \le j \le 2^{i-1})的位置是 2i−1+(j−1)2^{i-1} + (j-1)。

此外,定义操作 swap(x){\rm swap}(x),意为找到位置为 xx 的节点,并交换其左右子树。

「すわっぷしまーす」可以处理两类查询:

类型 1: 给予 k(1≤k≤2N)k(1 \le k \le 2^N),求第 kk 个叶子节点上的数字。

类型 2: 给出 a,b(1≤a≤b≤2N−1)a, b(1 \le a \le b \le 2^N - 1),按顺序执行 swap(a),swap(a+1),…,swap(b){\rm swap}(a), {\rm swap}(a+1), \ldots, {\rm swap}(b)。

高桥君希望能够构建一个自己的「すわっぷしまーす」,但是遇到了困难。因此,请你帮助他实现这一目标。具体任务是:给定 NN 和 QQ 个查询,你需要构建并维护一棵能够处理这些查询的「すわっぷしまーす」。

输入格式

从标准输入中读取数据,格式如下:

NN QQ t1t_1 a1a_1 b1b_1 t2t_2 a2a_2 b2b_2 \ldots tQt_Q aQa_Q bQb_Q

  • 第一行包含两个整数 N(1≤N≤17)N(1 \le N \le 17) 和 Q(1≤Q≤200,000)Q(1 \le Q \le 200,000)。
  • 接下来的 QQ 行,每行包含三个整数 tit_i, aia_i, bib_i。
    • 若 ti=1t_i = 1,这是一类 1 查询,aia_i 表示查询的 kk 值,bib_i 始终为 00。
    • 若 ti=2t_i = 2,这是一类 2 查询,aia_i 和 bib_i 分别表示范围 [a,b][a, b]。

输出格式

对于每个类型 1 查询,输出对应的结果,每个结果输出一次之后需要换行。

本翻译由 AI 自动生成

输入输出样例

  • 输入#1

    3 10
    2 5 5
    1 1 0
    1 2 0
    1 3 0
    1 4 0
    2 1 3
    1 2 0
    1 3 0
    1 5 0
    1 6 0

    输出#1

    1
    2
    4
    3
    8
    5
    4
    3

输入解题思路,AI测评打分。不知道怎么写?

首页