听说不仔细检查代码直接发程序会被骂
查看原帖
听说不仔细检查代码直接发程序会被骂
1067907
absolute_value楼主2023/10/4 10:42
#include<bits/stdc++.h>
using namespace std;
int n=0;
double ans=0;
struct point {
	double x;
	double y;
}a[100001],m;
bool b[100001]={0};
int main() {
	cin>>n;
	for(int i=0; i<n; i++) {
		cin>>a[i].x>>a[i].y;
		m.x=min(m.x,a[i].x);
		m.y=min(m.y,a[i].y);
	}
	int p0=-1,p1=-1,p2=-1;
	for(int i=0; i<n; i++) {
		p1=-1;
		for(int j=0; j<n; j++) {
			if(j!=p0&&(b[j]==0||j==p2)) {
				if(p0==-1) {
					if(p1==-1) {
						p1=j;
					} else {
						if((a[p1].y+m.y)*(a[j].x+m.x)>=(a[j].y+m.y)*(a[p1].x+m.x)) {
							p1=j;
						}
					}
				} else {
					if(p1==-1) {
						p1=j;
					} else {
						if((a[p1].y-a[p0].y)*(a[j].x-a[p0].x)>=(a[j].y-a[p0].y)*(a[p1].x-a[p0].x)) {
							p1=j;
						}
					}
				}
			}
		}
		if(p0==-1)p2=p1;
		else {
			ans+=sqrt((a[p0].x-a[p1].x)*(a[p0].x-a[p1].x)+(a[p0].y-a[p1].y)*(a[p0].y-a[p1].y));
			if(p2==p1)break;
		}
		p0=p1;
		b[p1]=1;
	}
	printf("%.2lf",ans);
	return 0;
}

https://www.luogu.com.cn/record/125602255

2023/10/4 10:42
加载中...