萌新求助二分
查看原帖
萌新求助二分
315191
P31pr楼主2021/1/30 16:07

以下两份代码(二分核心部分)采用了看起来都很正确的写法,结果它们都没有AC且WA了不同的点,这是为什么qaq

1号代码及提交:

int maxb=ceil(log2((long double)(s)))+5;
ans=INF;
for(int i=0;i<=maxb;++i)
{
	int x=(s+(1ll<<i)-1)/(1ll<<i);
	if(x==0) break;
	l=0,r=S;
	while(l<r)
	{
		int mid=(l+r)>>1;
		if(dp(mid)>=x) r=mid;
		else l=mid+1;
	}
	ans=min(ans,l*a+i*b);
}
printf("%lld\n",ans);

2号代码及提交

int maxb=ceil(log2((long double)(s)))+5;
ans=INF;
for(int i=0;i<=maxb;++i)
{
	int x=(s+(1ll<<i)-1)/(1ll<<i);
	if(x==0) break;
	l=0,r=S;
	while(l<=r)
	{
		int mid=(l+r)>>1;
		if(dp(mid)>=x) r=mid-1;
		else l=mid+1;
	}
	ans=min(ans,l*a+i*b);
}
printf("%lld\n",ans);

2021/1/30 16:07
加载中...