社区讨论

求条ヾ(•ω•`)o

P1135奇怪的电梯参与者 3已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@mhz4aoov
此快照首次捕获于
2025/11/15 01:14
3 个月前
此快照最后确认于
2025/11/16 13:49
3 个月前
查看原帖
本蒟蒻的伪入代码,大佬们求条<(_ _)>
CPP
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=200+10;
int n,a,b,k[maxn],ans=0x7f7f7f7f,sum;
inline int read(){
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0' || ch>'9'){
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0' && ch<='9'){
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x*f;
}
void write(int x){
	if(x<0){
		putchar('-');
		x=-x;
	}
	if(x>9) write(x/10);
	putchar(x%10+'0');
	return;
}
void writeh(int x){
	write(x);
	putchar('\n');
}
void writek(int x){
	write(x);
	putchar(' ');
}
void dfs(int pos,int step){
	if(pos==b){
		ans=min(ans,step);
		return ;
	}
	if(step>ans) return ;
	if(pos+k[pos]<=n) dfs(pos+k[pos],step+1);
	if(pos+k[pos]>=1) dfs(pos-k[pos],step+1);
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	n=read();
	a=read();
	b=read();
	for(int i=1;i<=n;i++){
		k[i]=read();
		sum+=k[i];
	}
	if(((sum+a)%2)!=(b%2)){
		writeh(-1);
		return 0;
	}
	dfs(a,0);
	if(ans!=0x7f7f7f7f) writeh(ans);
	else writeh(-1);
	return 0;
}

回复

7 条回复,欢迎继续交流。

正在加载回复...