hdu2899 ;
水提,直接三分,事实上求导后二分也能够。
#include#include using namespace std; double y; double inline f( long double x){ return 6*x*x*x*x*x*x*x+8*x*x*x*x*x*x+7*x*x*x+5*x*x-y*x;}int main(){ int T;scanf("%d",&T); while(T--) { cin>>y; double l,r,m1,m2; l=0;r=100; while(r-l>0.000001) { m1=l+(r-l)/3; m2=r-(r-l)/3; if(f(m1)
hdu3400 有俩个未知。第一次确定。则第二个函数式先见后增的,而第二个反馈出最小值后,第一个未知也是先见后增的,所以三分套三分(九分??呵呵~)
#include#include #include using namespace std;struct xy{ double x,y;};double inline dis( xy a,xy b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}xy A,B,C,D; int p,q,r;double inline s(xy a ,xy b){ return dis(a,A)/p+dis(a,b)/r+dis(b,D)/q;}double f(xy t){ xy l,r,m1,m2; l=C;r=D; while(dis(r,l)>0.0001) { m1.x=l.x+(r.x-l.x)/3; m1.y=l.y+(r.y-l.y)/3; m2.x=r.x-(r.x-l.x)/3; m2.y=r.y-(r.y-l.y)/3; if(s(t,m1) 0.0001) { m1.x=l.x+(r.x-l.x)/3; m1.y=l.y+(r.y-l.y)/3; m2.x=r.x-(r.x-l.x)/3; m2.y=r.y-(r.y-l.y)/3; if(f(m1)