《算法竞赛-训练指南》第二章-2.26_UVa 10341
2013-08-21 17:59
211 查看
这是一道纯解方程的题目,因为确定了范围,可以直接判断它的单调性。然后根据图像求解。
就注意这种单调性求解的题目一般都是要二分的。而因为double类型的一些缺点,并不想我们现实中那样。比如1就是1,在double型里面1可能是0.999999999999。注意这些就行了。另外就是二分的时候R-L尽量的小一些吧,因为越小答案就越精确。这个不一定就是保留到4位,你就1e-5就行,这是不一定的,稍微小一点时间上不会差太多,但是不这样答案就有可能错!切记。
贴出代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <string>
using namespace std;
const double eps = 1e-14;
double p, q, r, s, t, u;
double F(double x)
{
return p * exp(-x) + q * sin(x) + r * cos(x) + s * tan(x) + t * x * x + u;
}
int main()
{
// printf("%lf", 1e-5);
while (scanf("%lf%lf%lf%lf%lf%lf", &p, &q, &r, &s, &t, &u) != EOF)
{
double ans0 = F(0.0);
if (ans0 < 0)
{
printf("No solution\n");
continue;
}
double ans1 = F(1.0);
if (ans1 > 0)
{
printf("No solution\n");
continue;
}
double L = 0.0;
double R = 1.0;
while (R - L > 1e-7) //这里为什么要达到1e-7方就不得而知了!看来书上讲的到1e-5不靠谱啊、
{
double mid = L + (R - L) / 2;
if (F(mid) < 0)
{
R = mid;
}
else
{
L = mid;
}
}
printf("%.4lf\n", L);
}
// system("pause");
return 0;
}
就注意这种单调性求解的题目一般都是要二分的。而因为double类型的一些缺点,并不想我们现实中那样。比如1就是1,在double型里面1可能是0.999999999999。注意这些就行了。另外就是二分的时候R-L尽量的小一些吧,因为越小答案就越精确。这个不一定就是保留到4位,你就1e-5就行,这是不一定的,稍微小一点时间上不会差太多,但是不这样答案就有可能错!切记。
贴出代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <string>
using namespace std;
const double eps = 1e-14;
double p, q, r, s, t, u;
double F(double x)
{
return p * exp(-x) + q * sin(x) + r * cos(x) + s * tan(x) + t * x * x + u;
}
int main()
{
// printf("%lf", 1e-5);
while (scanf("%lf%lf%lf%lf%lf%lf", &p, &q, &r, &s, &t, &u) != EOF)
{
double ans0 = F(0.0);
if (ans0 < 0)
{
printf("No solution\n");
continue;
}
double ans1 = F(1.0);
if (ans1 > 0)
{
printf("No solution\n");
continue;
}
double L = 0.0;
double R = 1.0;
while (R - L > 1e-7) //这里为什么要达到1e-7方就不得而知了!看来书上讲的到1e-5不靠谱啊、
{
double mid = L + (R - L) / 2;
if (F(mid) < 0)
{
R = mid;
}
else
{
L = mid;
}
}
printf("%.4lf\n", L);
}
// system("pause");
return 0;
}
相关文章推荐
- 《算法竞赛-训练指南》第二章-2.3_UVa 11806
- 《算法竞赛-训练指南》第二章-2.5_UVa 11361
- 《算法竞赛-训练指南》第二章-2.12_LA 5059
- 《算法竞赛-训练指南》第二章-2.1_UVa 11538
- 《算法竞赛-训练指南》第二章-数论_高斯消元
- 《算法竞赛-训练指南》第二章-HDU_2018
- 《算法竞赛-训练指南》第二章-2.4-pre_Catalan
- 《算法竞赛-训练指南》-第二章-2.16_UVa 11427
- 《算法竞赛-训练指南》第二章-2.28_LA 3485(simpson)
- 《算法竞赛-训练指南》-第二章-2.18_UVa 10294
- 《算法竞赛-训练指南》第二章-2.4-LA 3516
- 《算法竞赛-训练指南》第二章-数论常用算法总结
- 《算法竞赛-训练指南》第二章-2.9_UVa 11426
- 《算法竞赛-训练指南》第二章-2.14_UVa 11021
- 《算法竞赛-训练指南》第二章-2.2_UVa 11401
- 《算法竞赛-训练指南》第二章-2.15_UVa 11722
- 《算法竞赛-训练指南》第二章-2.27_LA 5009
- 《算法竞赛-训练指南》第一章-1.9——UVa11210
- 算法竞赛入门训练指南 exe_1
- 《算法竞赛-训练指南》第一章-1.22_LA 3209