难道2分真的要卡死我么 ZOJ3702

本文分享了使用二分查找解决特定问题的经验,并强调了输出格式中换行符的重要性。通过实例演示了如何正确地应用二分查找算法,并讨论了在不同情况下的输出优化。

今天做浙大的校赛的时候见到的题目,被队友找规律秒掉了,但是听大牛说他是2分搞过去的。于是我也再用2分写一发。但是还是WA了好久,究其原因并不是2分的错,而是我输出格式少了换行。

如果要用半开半闭区间的二分,就一直用吧。这道题是个二分查找,当做查上界或者查下界都可以做,毕竟相等的只有一个。

最后的正确答案就是你的闭区间那部分。就有包括等号的那部分。

#include<stdio.h>
#include<string.h>

typedef long long LL;

const int MAX_N=1000000;

LL f[100];

LL search(int f1,int t)
{
	f[1]=f1;
	for(int i=2;i<=t;i++)
	{
		f[i]=f[i-1]+f[i-2];
	}
	return f[t];
}
int main()
{
	int cas;
	scanf("%d",&cas);
	f[0]=1;
	while(cas--)
	{
		int pos,v,t;
		scanf("%d%d%d",&pos,&v,&t);
		int lb=1,ub=1000003;
		int ans=-1;
		while(ub-lb>1)
		{	
			int mid=(ub+lb)>>1;
			int result=search(mid,pos);
			if(result<=v)
				lb=mid;
			else
				ub=mid;
		}
		if(search(lb,pos)==v)
			ans=lb;
		if(ans!=-1)
		{
			printf("%lld\n",search(ans,t));
		}
		else
		{
			printf("-1\n");
		}
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值