日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

luogu1024 一元三次方程求解

發(fā)布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 luogu1024 一元三次方程求解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目大意

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

  • 有且只有3個根
  • \(\forall x, x\in[-100,100]\)
  • \(\forall x_1,x_2,|x_1-x_2|\geq1\)
  • 定理:令\(f(x)=ax^3+bx^2+cx+d\),則\(f(l)f(r)<0\Leftrightarrow \exists x\in [l,r],使得f(x)=0\)
  • 思路

    從拿到題開始我們很容易想到二分。二分求點都是求一個點,包含該點的區(qū)間具有某一特定性質,不包含這個點的區(qū)間不具有這一特定性質。“區(qū)間的特定性質”便是性質4。但是怎么保證區(qū)間中只有一個點呢?由性質3可得每個長度為1的區(qū)間最多有一個解。因此我們對于每個滿足性質4的長度為1的區(qū)間二分即可。

    注意

    • 長度為1的區(qū)間內的函數圖象不一定單調,所以\(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

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的luogu1024 一元三次方程求解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。