标签:自己 nbsp 自适应 fabs val https result color 更新
附上一道水(模板)题
https://vjudge.net/problem/HDU-1724
和一道我认为卡精度要命的题(当然 是用这个方法被卡得要命的...)
https://vjudge.net/problem/HDU-5858
/* %.17f的答案
附上 HDU-5858的答案 : 0.29276251905757444
/*
----3-----
0.29139233981798940
0.29256905497842256
0.29269850120464480
0.29275620952824744
0.29276135677808401
0.29276230281685778
0.29276248841316299
0.29276251530238584
0.29276251829065014
0.29276251894032201
0.29276251904563999
0.29276251905757444
0.29276251906022166
0.29276251906063600
0.29276251906068307
*/
*/
const double eps = 1e-18; // 精度 double fx(double x) { // ToDo: 这儿填充自己的公式. 关于x轴区间[a, b]的公式 // 注意: 如果求的是多个区域, 但是端点一致.那么可以一起放到fx中计算. // eg: 曲线 y=2*x 与x轴的面积. (是积分求面积的 所以有正负.) // return 2 * x; } // 辛森普公式 // 原理采用一条抛物线 不断二分逼近原曲线,即真实值. // 曲线是: Ax^2 + Bx + C // 这是计算过程. AutoFix 是自适应求解的过程 时间复杂度和求解的eps精度有很大的关系. // 也就是说, 如果精度要求不是很高的水题可以用 辛森普公式 sososo 嗖嗖嗖嗖 double XPS_GX(double left, double right) { return (fx(left) + 4.0 * fx((left + right) / 2.0) + fx(right) ) / 6.0 * (right - left); } // 两种写法 // @left , right [left, right] // @val ----> result // @jeps ----> 迭代后更新的精度. 原理我不知道. double AutoFix(double left, double right, double val, double jeps) { double mid = (left + right) / 2.0; double lval = XPS_GX(left, mid), rval = XPS_GX(mid, right); if (fabs(val - lval - rval) <= 15.0 * jeps) return lval + rval + (lval + rval - val) / 15.0; // 再减去 DeTa 减少误差 return AutoFix(left, mid, lval, jeps / 2.0) + AutoFix(mid, right, rval, jeps / 2.0); // 迭代 jeps / 2.0 貌似会提高精度 原理不知道. } /* double AutoFix(double left, double right, double val) { double mid = (left + right) / 2.0; double lval = XPS_GX(left, mid), rval = XPS_GX(mid, right); if (fabs(val - lval - rval) <= eps) return val; return AutoFix(left, mid, lval) + AutoFix(mid, right, rval); } */
标签:自己 nbsp 自适应 fabs val https result color 更新
原文地址:https://www.cnblogs.com/cgjh/p/9419103.html