CF960D Full Binary Tree Queries

题目描述

你有一棵具有无限层数的满二叉树。 每个节点都有一个初始值。如果某个节点的值为 $x$,那么它的左孩子的值为 $2x$,右孩子的值为 $2x+1$。 根节点的值为 $1$。 你需要回答 $Q$ 个询问。 共有 $3$ 种类型的询问: 1. 将与值为 $X$ 的节点处于同一层的所有节点的值循环平移 $K$ 单位(仅影响该层的节点值,其他层不受影响)。 2. 将与值为 $X$ 的节点处于同一层的所有节点循环平移 $K$ 单位(这些节点的子树也会随之移动)。 3. 输出从值为 $X$ 的节点到根节点的简单路径上经过的所有节点的值。 正的 $K$ 表示向右循环平移,负的 $K$ 表示向左循环平移。 保证至少有一个类型 $3$ 的询问。

输入格式

第一行包含一个整数 $Q$($1 \leq Q \leq 10^{5}$)。 接下来 $Q$ 行,每行一个询问: - 类型 $1$ 和 $2$ 的询问格式为:$T\ X\ K$($1 \leq T \leq 2$;$1 \leq X \leq 10^{18}$;$0 \leq |K| \leq 10^{18}$),其中 $T$ 表示询问类型。 - 类型 $3$ 的询问格式为:$3\ X$($1 \leq X \leq 10^{18}$)。

输出格式

对于每个类型 $3$ 的询问,输出从该节点到根节点路径上所有节点的值,按从大到小的顺序输出。

说明/提示

以下是第一组测试数据中前 $4$ 层树的图片: 原始状态: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF960D/3753965d34e08b83256fa92db7096f66de1db941.png) 经过询问 $1\ 2\ 1$ 后: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF960D/d6350f6795afab08bec95128db23af58d71e24a4.png) 经过询问 $2\ 4\ -1$ 后: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF960D/1c7af7fd089110021fd920d50be3656fe800bbdb.png) 由 ChatGPT 4.1 翻译