【Poj2601】Simple calculations 二分

反正就是A1和An+1有线性关系(一次函数关系),二分和不二分都可以做。。。

这道题我当时在考场上死命推数学公式未遂浪费了巨多时间QAQ以后要注意

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
double a0,an_1,c[3005],d[3005],e[3005],sumc[3005];
int n;
void Init()
{
	scanf("%d",&n);
	scanf("%lf",&a0); scanf("%lf",&an_1);
	for(int i=1;i<=n;i++)
	{
		scanf("%lf",&c[i]); 
	}
	return ;
}
double check(double x)
{
	d[0]=a0; d[1]=x;
	for(int i=2;i<=n+1;i++)
	{
		d[i]=2.0*d[i-1]+2*c[i-1]-d[i-2];
	}
	return d[n+1];
}
int main()
{
	
	//freopen("in.txt","r",stdin);
	Init();
	double l=-1000.0,r=1000.0,mid,ans=-1;;
	for(int i=1;i<=100;i++)
	{
		mid=(l+r)/2.0;
		if(check(mid)>=an_1)
		{
			ans=mid;
			r=mid;
		}
		else
		{
			l=mid;
		}
	}
	printf("%.2lf\n",ans);
	return 0;
}

你可能感兴趣的:(二分)