AT D
  • 板块学术版
  • 楼主QZY2008
  • 当前回复12
  • 已保存回复12
  • 发布时间2022/10/22 22:00
  • 上次更新2023/10/27 06:25:15
查看原帖
AT D
547609
QZY2008楼主2022/10/22 22:00
#include <bits/stdc++.h>
using namespace std;

const int N=1005;
int n;
int num[N];
struct Node{
	int x,y,now,f;
};
queue<Node>q;
int fx,fy;
const int dx[]={0,0,1,-1};
const int dy[]={1,-1,0,0};

inline bool bfs(){
	int bx=0,by=0;
	q.push({num[1],by,1,2});
	while (!q.empty()){
		Node tmp=q.front();
		q.pop();
//		printf("x:%d y:%d now:%d f:%d\n",tmp.x,tmp.y,tmp.now,tmp.f); 
		int id=tmp.now+1;
		int ff=tmp.f;
		if (id==n+1&&tmp.x==fx&&tmp.y==fy)
			return true;
		if (id==n+1)
			continue;
		for (int i=0;i<4;i++){
			if (i==0&&ff==1)continue;
			if (i==1&&ff==0)continue;
			if (i==2&&ff==3)continue;
			if (i==3&&ff==2)continue;
			if (i==0&&ff==0)continue;
			if (i==1&&ff==1)continue;
			if (i==2&&ff==2)continue;
			if (i==3&&ff==3)continue;
			int x,y;
			x=tmp.x+dx[i]*num[id];
			y=tmp.y+dy[i]*num[id];
			q.push({x,y,id,i});
		}
	}
	return false;
}

signed main(){
//	freopen ("D.in","r",stdin);
//	freopen ("D.out","w",stdout);
	scanf("%d",&n);
	scanf("%d%d",&fx,&fy);
	for (int i=1;i<=n;i++)scanf("%d",&num[i]);
	puts(bfs()?"Yes":"No");
}

虽然但是,不会调

2022/10/22 22:00
加载中...