【Poj 2601】Simple calculations二分

1037 ワード

いずれにせよA 1とAn+1には線形関係(一次関数関係)があり、二分と不二のどちらでも可能です..
この問題は私が当時試験場で必死に数学の公式を押して未遂に大きな時間を浪費したQQQの後で注意しなければなりません
#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
",ans); return 0; }