求大佬们看一下
查看原帖
求大佬们看一下
342873
有趣的问题楼主2021/10/15 22:36

RT,前面都A了,最后一个点T了。 代码如下:

#include <bits/stdc++.h>
using namespace std;
int h,f,ans=100000;
struct place{
	int x,y,minn;
}ft[10005];
bool cmp(place a,place b){
	return a.y<b.y;
}
int main(){
	cin>>h>>f;
	for(int i=1;i<=f;i++)scanf("%d%d",&ft[i].x,&ft[i].y),ft[i].minn=1000000;
	sort(ft+1,ft+f+1,cmp);
	queue<int> q;
	for(int i=1;i<=f;i++){
		if(ft[i].y<=1000)q.push(i),ft[i].minn=1;
		else break;
	}
	while(!q.empty()){
		if(h-ft[q.front()].y<=1000){
			ans=min(ans,ft[q.front()].minn);
			q.pop();
			continue;
		}
		for(int i=1;i<=f;i++){
			if(ft[i].minn>ft[q.front()].minn+1&&sqrt(pow((ft[i].x-ft[q.front()].x),2)+pow((ft[i].y-ft[q.front()].y),2))<=1000){
				q.push(i);
				ft[i].minn=ft[q.front()].minn+1;
			}
		}
		q.pop();
	}
	cout<<ans;
	return 0;
}
2021/10/15 22:36
加载中...