ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

P11375 [GESP202412 六级] 树上游走

P11375 [GESP202412 六级] 树上游走 题目来源https://www.luogu.com.cn/problem/P11375题目背景对应的选择、判断题试题 - GESP 202412 C 六级 - 洛谷有题题目描述小杨有一棵包含无穷节点的二叉树即每个节点都有左儿子节点和右儿子节点除根节点外每个节点都有父节点其中根节点的编号为 1对于节点 i其左儿子的编号为 2×i右儿子的编号为 2×i1。小杨会从节点 s 开始在二叉树上移动每次移动为以下三种移动方式的任意一种第 1 种移动方式如果当前节点存在父亲节点向上移动到当前节点的父节点否则不移动第 2 种移动方式移动到当前节点的左儿子第 3 种移动方式移动到当前节点的右儿子。小杨想知道移动 n 次后自己所处的节点编号。数据保证最后所处的节点编号不超过 1012。输入格式第一行包含两个正整数 n 和 s代表移动次数和初始节点编号。第二行包含一个长度为 n 且仅包含大写字母 U、L 和 R 的字符串代表每次移动的方式其中 U 代表第 1 种移动方式L 代表第 2 种移动方式R 代表第 3 种移动方式。输出格式输出一个正整数代表最后所处的节点编号。输入输出样例输入 #1复制3 2 URR输出 #1复制7说明/提示小杨的移动路线为 2→1→3→7。子任务编号数据点占比ns120%≤10≤2220%≤50≤10360%≤≤对于全部数据保证有 1≤n≤1≤s≤。强调洛谷上的标签是高精度但是用栈long long就可以解决。太水了栈#include bits/stdc.h using namespace std; stacklong long s; stacklong long w; int main() { int c; long long x; cincx; long long dx; while(d!1) { d/2; w.push(d); }//找到自己的根 while(!w.empty()) { s.push(w.top()); w.pop(); }//改变顺序 while(c--) { char p; cinp; if(pUx!1) { if(!s.empty()) { xs.top(); s.pop(); } } if(pL) { s.push(x); x*2; } if(pR) { s.push(x); xx*21; }//模拟 } coutx; return 0; }
返回列表