专栏文章

题解:P7249 [BalticOI 2012 Day1] 移动网络

P7249题解参与者 1已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@miqh6n4k
此快照首次捕获于
2025/12/04 04:44
3 个月前
此快照最后确认于
2025/12/04 04:44
3 个月前
查看原文
抱歉
为了方便你们抄题解
我没加注释
CPP
#include <bits/stdc++.h>
using namespace std;
int n,l,a[1000005],b[1000005];
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch<='9'&&ch>='0'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
bool check(double len)
{
	double now=0;
	for(int i=1;i<=n;i++)
	{
		double dis=sqrt(len*len-1.0*b[i]*b[i]);
		double lft=a[i]-dis,rht=a[i]+dis;
		if(lft<=now&&now<=rht)now=rht;
	}
	return now>=l;
}
int main()
{
	n=read(),l=read();
	for(int i=1;i<=n;i++)
		a[i]=read(),b[i]=read();
	double l=0,r=1414213562.374,mid;
	while(r-l>=0.0003) 
	{
		mid=(l+r)/2;
		if(check(mid))r=mid;
		else l=mid;
	}
	printf("%.5lf",l);
	return 0;
}

抄吧

评论

1 条评论,欢迎与作者交流。

正在加载评论...