BZOJ2508: 简单题
2016-01-19 19:48
281 查看
纯的数学题
http://www.cnblogs.com/clrs97/p/4403197.html
可以把那个式子推出来
然后我一开始脑抽的去配方 结果搞傻掉了。。。
后来发现对于一个确定的x 要使ans最小则y为一个定量
那么就是把y化成x在带入就好了‘
Claris讲的很详细啊(说句不要脸的话其实我就是这么想的
http://www.cnblogs.com/clrs97/p/4403197.html
可以把那个式子推出来
然后我一开始脑抽的去配方 结果搞傻掉了。。。
后来发现对于一个确定的x 要使ans最小则y为一个定量
那么就是把y化成x在带入就好了‘
Claris讲的很详细啊(说句不要脸的话其实我就是这么想的
#include<cstdio> #include<cmath> #define N 120010 int n,q,Oper,i,m; double X1,X2,Y1,Y2; double a,b,c,d; double Aa ,Bb ,Cc ,Ab ,Ac ,Bc ; double Suma,Sum2b,Sum3c,Sumb,Sumc,Sum2c,Ans; const double eps=1e-8; char hc; inline void read(int &a) { a=0;do hc=getchar();while(hc<'0'||hc>'9'); while(hc<='9'&&hc>='0')a=(a<<3)+(a<<1)+hc-'0',hc=getchar(); } inline double abs(double a){return a<0?-a:a;} inline bool isZero(double x){return abs(x)<eps;} inline double solve(double a,double b,double c) { if(isZero(a))return c; double x=-b/(2*a); return a*x*x+b*x+c; } int main() { read(q); while(q--) { read(Oper); if(Oper==0) { scanf("%lf%lf%lf%lf",&X1,&Y1,&X2,&Y2); if(isZero(X1-X2)) a=1,b=0,c=-X1; else a=(Y2-Y1)/(X2-X1),b=-1,c=Y1-a*X1; d=a*a+b*b; Aa[++n]=a*a/d,Bb =b*b/d,Cc =c*c/d, Ab =a*b/d,Ac =a*c/d,Bc =b*c/d; Suma+=Aa ,Sum2b+=Bb ,Sum3c+=Cc , Sumb+=Ab ,Sumc+=Ac ,Sum2c+=Bc ; m++; } else if(Oper==1) { read(i); Suma-=Aa[i],Sum2b-=Bb[i],Sum3c-=Cc[i], Sumb-=Ab[i],Sumc-=Ac[i],Sum2c-=Bc[i]; m--; } if(Oper==2) { if(!m){puts("0.00");continue;} if(isZero(Sum2b)) a=b=0; else a=-Sumb/Sum2b,b=-Sum2c/Sum2b; Ans=solve(Suma+2*a*Sumb+a*a*Sum2b,2*(b*Sumb+Sumc+a*b*Sum2b+a*Sum2c),b*b*Sum2b+2*b*Sum2c+Sum3c); if(isZero(Ans))Ans=0; printf("%.2f\n",Ans); } } return 0; }
相关文章推荐
- C语言中的数据类型及其转换详解
- TestNG依赖测试
- Java NIO SocketChannel
- 初驾到。
- mysql增删改查
- 谈Spring的理解
- python 实现布尔莎转换模型
- 【杭电oj】 2001 - 计算两点间的距离(sqrt)
- Java NIO FileChannel
- C#高级编程三十天----泛型结构,泛型方法,泛型托付
- Max Sum 1003
- Django静态文件配置
- 线程分离状态
- 以代码爱好者角度来看AMD与CMD(转)
- Python-用filter()删除1~100的素数和一些思考
- 【JS学习笔记】JS基础中:流程控制
- weblogic安全加强:在Console中设定Administration Port
- 原码,反码,补码
- Mysql数据库带参数的搜索语句
- sync、fsync、fdatasync三个函数以及O_SYNC标志位的区别