QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#702702#5251. ConstellationstreasuresgcWA 595ms54860kbC++232.1kb2024-11-02 16:26:262024-11-02 16:26:32

Judging History

你现在查看的是最新测评结果

  • [2024-11-02 16:26:32]
  • 评测
  • 测评结果:WA
  • 用时:595ms
  • 内存:54860kb
  • [2024-11-02 16:26:26]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read()
{
	int sum=0,f=1;
	char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f*=-1;ch=getchar();}
	while(isdigit(ch)){sum=sum*10+ch-48;ch=getchar();}
	return sum*f;
}
int ord[2005][2005];
struct node{
	int x,y;
};
node P[2005];
int fa[5005];
int pfhx[5005],pfhy[5005];
int sumx[5005],sumy[5005];
int gs[5005];
int tot;
const double eps = 1e-7;
priority_queue<pair<double,pair<int,int> > > pq;
inline int find_father(int x)
{
	if(fa[x]!=x) return fa[x]=find_father(fa[x]);
	return x;
}
inline void unionn(int x,int y)
{
	int rx=find_father(x);
	int ry=find_father(y);
	if(rx==ry) return;
	cout<<gs[rx]+gs[ry]<<endl;
	tot++;
	fa[rx]=tot,fa[ry]=tot;
	pfhx[tot]=pfhx[rx]+pfhx[ry];
	pfhy[tot]=pfhy[rx]+pfhy[ry];
	sumx[tot]=sumx[rx]+sumx[ry];
	sumy[tot]=sumy[rx]+sumy[ry];
	gs[tot]=gs[rx]+gs[ry];
}
inline double dis(int x,int y)
{
	x=find_father(x),y=find_father(y);
	double dx = pfhx[x]*gs[y]+pfhx[y]*gs[x]-sumx[x]*sumx[y]*2;
	double dy = pfhy[x]*gs[y]+pfhy[y]*gs[x]-sumy[x]*sumy[y]*2;
	return (dx+dy) / (double)(gs[x]*gs[y]);
}
inline bool check_top()
{
	double g=-pq.top().first;
	int nx=-pq.top().second.first;
	int ny=-pq.top().second.second;
	pq.pop();
//	cout<<nx<<" "<<ny<<" "<<g<<endl;
//	system("pause");
	if(find_father(nx)==find_father(ny)) return 0;
	double d=dis(nx,ny);
//	cout<<nx<<" "<<ny<<" "<<g<<" "<<d<<endl;
//	system("pause");
	if(d <= g+eps && d >= g-eps)
	{
		unionn(nx,ny);
		return 1;
	}
	
	nx=find_father(nx);
	ny=find_father(ny);
	pq.push(make_pair( -d,make_pair(-min(nx,ny) , -max(nx,ny)) ));
	
	return 0;
}
signed main()
{
	int n;
	n=read();
	for(int i=1;i<=n;i++)P[i].x=read(),P[i].y=read();
	for(int i=1;i<=n;i++) fa[i]=i,sumx[i]=P[i].x,sumy[i]=P[i].y,pfhx[i]=P[i].x*P[i].x,pfhy[i]=P[i].y*P[i].y,gs[i]=1;
	for(int i=n+1;i<=2*n;i++) fa[i]=i;
	tot=n;
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
		{
			double d=dis(i,j);
			pq.push(make_pair(-d,make_pair(-i,-j)));
		}
	
	int T=n-1;
	while(T--)
		while(!check_top());
	
	return 0;
}


詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3556kb

input:

2
0 0
1 0

output:

2

result:

ok single line: '2'

Test #2:

score: 0
Accepted
time: 533ms
memory: 53920kb

input:

2000
1000 -1000
1000 -999
1000 -998
1000 -997
1000 -996
1000 -995
1000 -994
1000 -993
1000 -992
1000 -991
1000 -990
1000 -989
1000 -988
1000 -987
1000 -986
1000 -985
1000 -984
1000 -983
1000 -982
1000 -981
1000 -980
1000 -979
1000 -978
1000 -977
1000 -976
1000 -975
1000 -974
1000 -973
1000 -972
1000...

output:

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
...

result:

ok 1999 lines

Test #3:

score: 0
Accepted
time: 530ms
memory: 54456kb

input:

2000
-1000 1000
-999 1000
-998 1000
-997 1000
-996 1000
-995 1000
-994 1000
-993 1000
-992 1000
-991 1000
-990 1000
-989 1000
-988 1000
-987 1000
-986 1000
-985 1000
-984 1000
-983 1000
-982 1000
-981 1000
-980 1000
-979 1000
-978 1000
-977 1000
-976 1000
-975 1000
-974 1000
-973 1000
-972 1000
-971...

output:

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
...

result:

ok 1999 lines

Test #4:

score: 0
Accepted
time: 531ms
memory: 53280kb

input:

2000
-1000 -1000
-999 -1000
-998 -1000
-997 -1000
-996 -1000
-995 -1000
-994 -1000
-993 -1000
-992 -1000
-991 -1000
-990 -1000
-989 -1000
-988 -1000
-987 -1000
-986 -1000
-985 -1000
-984 -1000
-983 -1000
-982 -1000
-981 -1000
-980 -1000
-979 -1000
-978 -1000
-977 -1000
-976 -1000
-975 -1000
-974 -10...

output:

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
...

result:

ok 1999 lines

Test #5:

score: 0
Accepted
time: 525ms
memory: 53996kb

input:

2000
-1000 -1000
-1000 -999
-1000 -998
-1000 -997
-1000 -996
-1000 -995
-1000 -994
-1000 -993
-1000 -992
-1000 -991
-1000 -990
-1000 -989
-1000 -988
-1000 -987
-1000 -986
-1000 -985
-1000 -984
-1000 -983
-1000 -982
-1000 -981
-1000 -980
-1000 -979
-1000 -978
-1000 -977
-1000 -976
-1000 -975
-1000 -9...

output:

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
...

result:

ok 1999 lines

Test #6:

score: 0
Accepted
time: 516ms
memory: 52872kb

input:

2000
1000 -250
1000 -249
1000 -248
1000 -247
1000 -246
1000 -245
1000 -244
1000 -243
1000 -242
1000 -241
1000 -240
1000 -239
1000 -238
1000 -237
1000 -236
1000 -235
1000 -234
1000 -233
1000 -232
1000 -231
1000 -230
1000 -229
1000 -228
1000 -227
1000 -226
1000 -225
1000 -224
1000 -223
1000 -222
1000 ...

output:

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
...

result:

ok 1999 lines

Test #7:

score: 0
Accepted
time: 534ms
memory: 54660kb

input:

2000
0 -1000
0 -999
0 -998
0 -997
0 -996
0 -995
0 -994
0 -993
0 -992
0 -991
0 -990
0 -989
0 -988
0 -987
0 -986
0 -985
0 -984
0 -983
0 -982
0 -981
0 -980
0 -979
0 -978
0 -977
0 -976
0 -975
0 -974
0 -973
0 -972
0 -971
0 -970
0 -969
0 -968
0 -967
0 -966
0 -965
0 -964
0 -963
0 -962
0 -961
0 -960
0 -959
...

output:

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
...

result:

ok 1999 lines

Test #8:

score: -100
Wrong Answer
time: 595ms
memory: 54860kb

input:

2000
-400 571
-725 636
-880 529
-657 372
-383 382
-746 888
-604 785
-497 557
-677 977
-562 917
-530 623
-636 535
-816 579
-633 428
-573 561
-496 479
-409 448
-570 379
-421 795
-827 865
-730 809
-423 984
-676 772
-398 816
-451 373
-756 777
-351 829
-954 345
-543 871
-595 521
-501 734
-378 769
-987 60...

output:

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
...

result:

wrong answer 273rd lines differ - expected: '2', found: '4'