难道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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章