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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Uva5009 Error Curves

發(fā)布時(shí)間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Uva5009 Error Curves 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

已知n條二次曲線si(x) = ai*x^2 + bi*x + ci(ai ≥ 0),定義F(x) = max{si(x)},求出F(x)在[0,1000]上的最小值.

鏈接:傳送門

分析:最大值最小,我們可以利用二分來解,但是有一個(gè)更牛的方法叫:“三分法”,這個(gè)方法的應(yīng)用范圍是凸函數(shù),可以看一個(gè)圖像:

L和R是邊界,m1,m2是三等分點(diǎn),如果f(m1) < f(m2),那么最小值肯定在[l,m2]內(nèi),注意,不是[l,m1]因?yàn)槿绻鹠1在最低點(diǎn)右邊,那么就會(huì)矛盾,同理,如果f(m2) < f(m1),那么最小值肯定在[m1,r]之間,剩下的操作和二分法基本上就是一樣的了。

對(duì)于本題而言,可以看出也是一個(gè)凸函數(shù),所以我們可以利用三分法來快速求最小值.

#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<cmath> #include<map> #include<string>using namespace std;const int maxn = 10010;int n, a[maxn], b[maxn], c[maxn],t;double f(double x) {double ans = a[1] * x * x + b[1] * x + c[1];for (int i = 2; i <= n; i++)ans = max(ans, a[i] * x*x + b[i] * x + c[i]);return ans; }int main() {scanf("%d", &t);while (t--){scanf("%d", &n);for (int i = 1; i <= n; i++)scanf("%d%d%d", &a[i], &b[i], &c[i]);double L = 0.0, R = 1000.0;while (R - L > 0.000000001){double m1 = L + (R - L) / 3, m2 = R - (R - L) / 3;if (f(m1) < f(m2))R = m2;elseL = m1;}printf("%.4lf\n", f(L));}return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/zbtrs/p/7413234.html

總結(jié)

以上是生活随笔為你收集整理的Uva5009 Error Curves的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。