#6,#8,#12,#13错误,悬关
查看原帖
#6,#8,#12,#13错误,悬关
812424
封禁用户楼主2024/5/26 15:29
#include <bits/stdc++.h>
using namespace std;
int n,r[505];
double dis[505];
struct node{
	int x,y;
}a[505];
double jl(int x1,int x2,int y1,int y2){
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
double jl0(int x1,int y1){
    return sqrt((x1)*(x1)+(y1)*(y1));
}
bool cmp(node q,node p){
	return jl0(q.x,q.y)<jl0(p.x,p.y);
}
int  main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].x>>a[i].y;
	}
	sort(a+1,a+n+1,cmp);
	dis[1]=jl0(a[1].x,a[1].y);
	r[1]=1;
	dis[0]=0;
	for(int i=2;i<=n;i++){
		//cout<<i<<" "<<a[i].x<<" "<<a[i].y<<"\n";
		double k=jl0(a[i].x,a[i].y);
		r[i]=1;
		double g=10000000;
		for(int j=0;j<i;j++){
			if(k>=jl0(a[j].x,a[j].y)&&g>jl(a[i].x,a[j].x,a[i].y,a[j].y)){
				g=jl(a[i].x,a[j].x,a[i].y,a[j].y);
				r[i]=1+r[j];
			}
		}
	}
	int o=0;
    for(int i=0;i<=n;i++){
       ++r[i];
      // cout<<r[i]<<" ";
        o+=r[i];
    }
  //  cout<<"\n";
    if(o%2==1){
		cout<<"No";
		return 0;
	}
	sort(r,r+1+n);
	o/=2;
	if(r[n]>o){
		cout<<"No";
		return 0;
	}else if(r[n]==o){
		cout<<"Yes";
		return 0;
	}
	int u=r[n];
	for(int i=n-1;i>=0;i--){
		if(u+r[i]<o){
			u+=r[i];
		}else if(u+r[i]==o){
			cout<<"Yes";
			return 0;
		}
	}
    int L=r[n],A=r[n-1];
	for(int i=0;i<=n-2;i++){
		if(A+r[i]<=L){
			A+=r[i];
		}else{
			L+=r[i];
		}
	}
	if(L==A){
		cout<<"Yes";
	}else cout<<"No";
	return 0;
}
2024/5/26 15:29
加载中...