题目大意

已知一元三次方程\(ax^3+bx^2+cx+d=0\):

  1. 有且只有3个根
  2. 对\(\forall x, x\in[-100,100]\)
  3. 对\(\forall x_1,x_2,|x_1-x_2|\geq1\)
  4. 定理:令\(f(x)=ax^3+bx^2+cx+d\),则\(f(l)f(r)<0\Leftrightarrow \exists x\in [l,r],使得f(x)=0\)

思路

从拿到题开始我们很容易想到二分。二分求点都是求一个点,包含该点的区间具有某一特定性质,不包含这个点的区间不具有这一特定性质。“区间的特定性质”便是性质4。但是怎么保证区间中只有一个点呢?由性质3可得每个长度为1的区间最多有一个解。因此我们对于每个满足性质4的长度为1的区间二分即可。

注意

  • 长度为1的区间内的函数图象不一定单调,所以\(f(\frac{l+r}{2})\)不具有任何代表性。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;const double EPS = 0.0001;
double A, B, C, D;double Bsearch(double l, double r, double k, double eps, double (*GetVal)(double, double))
{double mid;//printf("l %.2f r %.2f\n", l, r);while(r - l > eps){//printf("l %.2f r %.2f\n", l, r);mid=(l+r)/2.000;if(GetVal(l, mid) < k)r = mid;elsel = mid;}return mid;
}double Func(double x)
{return A * x * x * x + B * x * x + C * x + D;
}double GetVal(double l, double r)
{return Func(l) * Func(r);
}int main()
{cin>>A>>B>>C>>D;int ansCnt = 0;double ans[4];for(double l = -100; l <= 99; l += 1){double r = l + 1;//printf("l %.2f r %.2f\n", l, r);if(Func(l) == 0)ans[++ansCnt] = l;else if(Func(l) * Func(r) < 0){//printf("ok\n");ans[++ansCnt] = Bsearch(l, r, 0, EPS, GetVal);}}//printf("%.2f %.2f %.2f\n", ans[1], ans[2], ans[3]);//sort(ans+1, ans + 3 + 1);for(int i=1; i<=ansCnt; i++)printf("%.2f ", ans[i]);return 0;
}

转载于:https://www.cnblogs.com/headboy2002/p/9080067.html

luogu1024 一元三次方程求解相关推荐

  1. zcmu-2116一元三次方程求解

    2116: 一元三次方程求解 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 65  Solved: 23 [Submit][Status][Web B ...

  2. 1814: 一元三次方程求解

    //很久之前写的,记录一下~ 1814: 一元三次方程求解 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 45 Solved: 28 [Submit][ ...

  3. 【luogu 1024 一元三次方程求解】二分思想

    题目出自luogu 1024 一元三次方程求解 描述: 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根( ...

  4. 信息学奥赛一本通(1238:一元三次方程求解)

    1238:一元三次方程求解 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 6364     通过数: 3241 [题目描述] 形如:ax^3+bx^2+cx+d= ...

  5. 1038 一元三次方程求解

    1038 一元三次方程求解 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 有形如:ax3+b ...

  6. 洛谷——P1024 [NOIP2001 提高组] 一元三次方程求解

    P1024 [NOIP2001 提高组] 一元三次方程求解 题目描述 有形如:a x^3 + b x^2 + c x + d = 0a**x3+b**x2+c**x+d=0 这样的一个一元三次方程.给 ...

  7. P1024 [NOIP2001 提高组] 一元三次方程求解 /1238:一元三次方程求解

    P1024 [NOIP2001 提高组] 一元三次方程求解 /1238:一元三次方程求解 # [NOIP2001 提高组] 一元三次方程求解 ## 题目描述 有形如:$a x^3 + b x^2 + ...

  8. MATLAB实现一元三次方程求解/盛金公式

    MATLAB实现一元三次方程求解/盛金公式 一元三次方程求解中,1945年卡尔丹诺把冯塔纳的三次方程求根公式发表出来,但该公式形式比较复杂,直观性也较差.1989年范盛金对一元三次方程求解进行了深入的 ...

  9. 蓝桥杯 算法训练 一元三次方程求解

    算法训练 一元三次方程求解   时间限制:1.0s   内存限制:256.0MB        问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b, ...

最新文章

  1. 用@.xxx.cn可实现短域名xxx.cn跳转
  2. web.config中配置Session
  3. 在Intellij上面导入项目 AOP示例项目 AspectJ学习 Spring AoP学习
  4. jboss jta mysql_JBoss平台下JTA与JMS实验软件架构8
  5. php校园开源,基于 Laravel 5.5 开发的开源校园管理系统 —— Unifiedtransform
  6. PHP 社区拒绝在俄乌冲突中“站队”
  7. getparent_Java文件类字符串getParent()方法(带示例)
  8. 用mac的chrome浏览器调试Android手机的网页
  9. php ci is numeric,CI继承类MY_Model
  10. python图像线条提取_python3 图像细化(提取骨架线)
  11. Kubernetes CKA认证运维工程师笔记-Kubernetes存储
  12. 计算机老丢失运行库,计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll的修复方案
  13. 【毕设】requests+bs4+re 爬取知网文献来源的信息
  14. [高通MSM8953_64][Android10]新增并挂载custom分区
  15. 写完APDL命令流之后,如何运行TXT文件,直接生成k文件
  16. Power BI 数据分析基础
  17. 【Visual Studio 2013中文语言包安装】
  18. 技法の穴をふさぐ:コスト編 --人月単価は案件ごとにバラバラ公表データで相場を知る
  19. 基于JAVA服装连锁店后台管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  20. 根据单选框的选择来决定下拉框的禁用与否

热门文章

  1. SAP成都研究院2018年年会之前的技术讲座
  2. BSP和JSP里的UI元素ID生成逻辑
  3. java floatmath_《Java1.doc
  4. matlab实现盖尔圆,[理学]数值分析习题解答.doc
  5. python里os什么模块_python中os模块的主要方法
  6. c语言exit_C语言实现2048
  7. mysql定期删除数据_mysql数据库如何实现定期删除数据库一些东西
  8. python自定义函数找最大值_python – 查找用户定义函数的局部最大值和最小值
  9. 考研计算机组成原理难点,2010计算机考研:计算机组成原理冲刺重难点梳理
  10. android工程引入unity,Unity导出Android Studio工程