本题疑似有误
查看原帖
本题疑似有误
549499
Disjoint_cat楼主2023/1/20 11:28

我正在做此比赛的题,在这题中,我的核心代码如下:

ll a,b,l,r,m1,m2;
#define LD double
LD f(ll x)
{
	return (LD)a/sqrt(x+1)+(LD)b*x;
}
void Solve()
{
	cin>>a>>b;
	cout<<fixed<<setprecision(10);
	l=0,r=a/b;
	while(r-l>=5)
	{
		//cout<<l<<" "<<r<<endl;
		m1=(l*2+r)/3;m2=(l+r*2)/3;
		//cout<<m1<<" "<<m2<<" "<<f(m1)<<" "<<f(m2)<<endl;
		if(f(m1)>f(m2))l=m1;else r=m2;
	}
	LD ans=a;
	for(ll i=l;i<=r;i++)ans=min(ans,f(i));
	cout<<ans;
}

它 AC 了。

然后,我把 #define LD double 改成了 #define LD long double

它 WA 了。

我把我的程序与官方题解对拍。

tj:l=29240177199 r=29240177821

m1=29240177406 m2=29240177613

f(m1)=8772053214538.5976562500 f(m2)=8772053214538.5976562500

我的(long double):l=29240177199 r=29240177613

m1=29240177337 m2=29240177475

f(m1)=8772053214538.5983052254 f(m2)=8772053214538.5981745720

所以是我的问题,还是题目的问题,还是 long double 的问题?

2023/1/20 11:28
加载中...