数据范围有误
查看原帖
数据范围有误
222425
Perfonster楼主2020/6/13 10:20

本题题面的数据范围

2000000<=xi<=2000000-2000000 <= x_i <= 2000000

然而本人在#7的文件倒数第四行发现x=-2016466。倒数第10行等等也有类似问题。我估计#8范围也有问题,因为我算法无误但得80分,就错在#7#8。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define dis(y) sqrt(d*d-y*y); 
using namespace std;
int n,cnt;
double xx,yy,d,pos=-2000001;//这一行,我把pos设置成-2000001,理论是比最小的x还要小,然而我#7输出230,答案231,我把pos多加1个0输出的就是231 正确答案了。
struct island{
	double l,r;
};
island a[1009];
bool cmp(const island &x,const island &y){
	return x.l<y.l;//按左端点排序
}
int main(){
	scanf("%d%lf",&n,&d);
	for(int i=1;i<=n;i++){
		scanf("%lf%lf",&xx,&yy);
		if(yy>d){
			printf("-1\n");
			return 0;
		}
		a[i].l=xx-dis(yy);
		a[i].r=xx+dis(yy);
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++){
		if(a[i].l>pos){
			cnt++;
			pos=a[i].r;
		}
		else pos=min(pos,a[i].r);//这里出现问题
	}
	printf("%d\n",cnt);
	return 0;
}

请求管理员修复,谢谢

2020/6/13 10:20
加载中...