完蛋了被水题卡住了 qwq

P11375 [GESP202412 六级] 树上游走 - 洛谷

一共错了三个点:

#include<bits/stdc++.h>
#define I using
#define AK namespace
#define IOI std
#define i_ak return
#define ioi  0
#define i_will signed
#define ak main
#define IMO ()
#define int long long
I AK IOI;
int n,m;
string s; 
deque<char>q; 
i_will ak IMO{
	cin>>n>>m>>s;
	for(int i=0;i<n;i++){
		if(s[i]=='U'&&!q.empty()&&(q.back()=='L'||q.back()=='R'))q.pop_back();
		else q.push_back(s[i]);
	}
	while(!q.empty()){
		if(q.front()=='U'&&m!=1)m/=2;
		else if(q.front()=='L')m*=2;
		else m=2*m+1;
		q.pop_front();
	}
	cout<<m;
	i_ak ioi;
}
1 个赞

@金杭东

1 个赞

来了

来了

1 个赞

@我命由我不由天 我拿个徽章

1 个赞

@金杭东1?拿什么徽章?

1 个赞

好像没问题

1 个赞

@被人

1 个赞

@金杭东1 所以哪里错了?

1 个赞

引用一下

1 个赞

不知道,看不出来

1 个赞

e好吧,但是就是离谱的错了三个点,其他都是对的

1 个赞

真感觉没问题

1 个赞

e那有别人帮帮我吗? @2345安全卫士 @360安全卫士 @stringdp100005 @360病毒

我来了

@360病毒 awa,哪里错啦,根本看不出来呀

我走了

这里的else包括了q.front()=='U'&&m==1q.front()=='R'两种情况吧

你的代码在遇到q.front()=='U’并且m==1时会m=2*m+1,多加个判断条件就行

@稻叶昙 @360病毒 感谢,对了 wyd 能帮我验一下题目吗?