关于O2优化的疑惑
查看原帖
关于O2优化的疑惑
1055920
taoqiniu楼主2024/10/31 19:31
#include<bits/stdc++.h>
using namespace std;
struct node{
	int x,y;
};
queue<node> q;
int ans[500][500],death[500][500];
int walk[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int m,Ans=100000;
int main(){
	cin>>m;
	memset(ans,-1,sizeof(ans));
	memset(death,0x7f,sizeof(death));
	for(int i=1;i<=m;i++){
		int x,y,t;
		cin>>x>>y>>t;
		death[x][y]=min(death[x][y],t);
		for(int k=0;k<4;k++){
			int tx=x+walk[k][0],ty=y+walk[k][1];
			death[tx][ty]=min(death[tx][ty],t);
		}
	}
	q.push((node){0,0});
	ans[0][0]=0;
	while(!q.empty()){
		node u=q.front();
		q.pop();
		int ux=u.x,uy=u.y;
		for(int k=0;k<4;k++){
			int x=ux+walk[k][0],y=uy+walk[k][1];
			if(x<0 || y<0 || ans[x][y]!=-1 || ans[ux][uy]+1>=death[x][y] || x>305 || y>305) continue;
			ans[x][y]=ans[ux][uy]+1;
			q.push((node){x,y});
		}
	}
	for(int i=0;i<=305;i++){
		for(int j=0;j<=305;j++){
			if(death[i][j]>1000 && ans[i][j]!=-1) Ans=min(Ans,ans[i][j]);
		}
	}
	if(Ans==100000) puts("-1");
	else cout<<Ans;
	return 0;
}

为什么开O2全wa啊
不开O2
开O2

2024/10/31 19:31
加载中...