玄关
  • 板块灌水区
  • 楼主Atwi_llljx
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/29 13:37
  • 上次更新2023/11/2 10:54:41
查看原帖
玄关
886208
Atwi_llljx楼主2023/10/29 13:37

P2504

/*



*/
#include<bits/stdc++.h>
#define r read()
#define ll long long
#define MAX 0x3f3f3f3f
#define MIN -0x3f3f3f3f
using namespace std;
ll read();
int n,p[1010],m,bn,dn,d,bcj[510],pd;
struct a1{
	int xx,yy;
}sx[510];
struct a2{
	int a,b;
	double v;
}s[25001000];
ll read(){
    int dx=0,x=1;
    char xx=getchar();
    for(;xx<'0'||xx>'9';xx=getchar())
		if(xx=='-')
			x=-1;
	for(;xx>='0'&&xx<='9';dx=dx*10+xx-48,xx=getchar());
	return dx*x;
}
bool a3(a2 x,a2 y){
	return x.v<y.v;
}
int a4(int x){
	if(bcj[x]==x)
		return x;
	bcj[x]=a4(bcj[x]);
	return bcj[x];
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	n=r;
	for(int i=1;i<=n;p[i]=r,i++);
	m=r;
	for(int i=1;i<=m;bcj[i]=i,i++);
	for(int i=1;i<=m;sx[i]={r,r},i++);
	for(int i=1;i<=m;i++)
		for(int j=i+1;j<=m;j++)
			if(i!=j){
				bn++;
				s[bn]={i,j,sqrt((sx[i].xx-sx[j].xx)*(sx[i].xx-sx[j].xx)+(sx[i].yy-sx[j].yy)*(sx[i].yy-sx[j].yy))};
			}
	sort(s+1,s+bn+1,a3);
	for(int i=1;i<=bn;i++){
		if(a4(s[i].a)!=a4(s[i].b)){
			dn++;
			bcj[a4(s[i].a)]=bcj[a4(s[i].b)];
		}
		if(dn==m-1){
			d=s[i].v;
			break;
		}
	}
	for(int i=1;i<=n;pd+=p[i]>=d,i++);
	cout<<pd;
	return 0;
}

wa 5个

2023/10/29 13:37
加载中...