#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;//定义
int n,ans,dq[N],l;
char cnt[N];
void qc(){//去重函数
for(int i=1;i<=n;i++){
if(cnt[i]=='L' || cnt[i]=='R'){//把L和R的下表放进数组
dq[++l]=i;
}
if(cnt[i]=='U'){
if(l>0){//去重
cnt[dq[l]]=' ';
l--;
cnt[i]=' ';
}
}
}
}
void Up(){//父节点
if(ans!=1){
if(ans%2){
ans=(ans-1)/2;
}
else ans/=2;
}
}
void Left(){//左儿子
ans*=2;
}
void Right(){//右儿子
ans=ans*2+1;
}
void dfs(char fx){//游走
if(fx=='U'){//调用,下同
Up();
return;
}
if(fx=='L'){
Left();
return;
}
if(fx=='R'){
Right();
return;
}
}
signed main(){
cin>>n>>ans;
for(int i=1;i<=n;i++){
cin>>cnt[i];
}
qc();
for(int i=1;i<=n;i++){//最后去重后一起统计,不会越界
if(cnt[i]!=' ') dfs(cnt[i]);
}
cout<<ans;//答案
return 0;
}
后面看了看题解,发现思路和我一样,并且我的代码能AC所以洛谷官方能不能加强数据?或者有没有神犇能指出缺陷?