不懂就问
查看原帖
不懂就问
1249789
FEITJSW楼主2024/7/23 23:32
#include <iostream>
#include <cstdio>
#pragma GCC optimize(2)
using namespace std;
const int maxn = 1e3 + 233;
struct Floor{
	int floor, updown, vis, sum;
} k[maxn * 2];
int n, a, b;
int init(){
	cin >> n >> a >> b;
	for (int i = 1;i <= n;i ++){
		cin >> k[i].updown;
		k[i].floor = i;
	}
	k[a].vis = true;
}
void bfs(){
	if (a == b) return ;
	int head = 0, tail = 1, q[maxn]={0, a};
	while (head < tail){
		head ++;
		int up = k[q[head]].updown;
		int down = - k[q[head]].updown;
		if (k[q[head]].floor + up <= n && k[q[head] + up].vis == false){
			q[++ tail] = k[q[head] + up].floor;
			k[q[head] + up].vis = true;
			k[q[head] + up].sum = k[q[head]].sum + 1;
		}
		if (k[q[head]].floor + down >= 1 && k[q[head] + down].vis == false){
			q[++ tail] = k[q[head] + down].floor;
			k[q[head] + down].vis = true;
			k[q[head] + down].sum = k[q[head]].sum + 1;
		} 
	}
}
void print(){
	if (k[b].sum == 0){
		printf("%d", -1);
		return ; 
	}
	printf("%d", k[b].sum);
}
int main(){
	init();
	if (a == b){
		cout << 0;
		return 0;
	}
	bfs();
	print();
	return 0;
}

为啥我这个开了O2会TLE MLE直接零分

但是关掉O2就AC了(?

2024/7/23 23:32
加载中...