二次函式組合 三分

2021-09-30 17:07:31 字數 695 閱讀 3948

給你n個二次函式,記第i個為:fi(x)=aix^2+bix+ci,

(1≤n≤100000,0 ≤ ai ≤ 100, |bi| ≤ 5000, |ci| ≤ 5000)。

設函式f(x)=max。

請你求出f(x)的在區間[0, 1000]上的最小值,保留3位有效數字。

因為f(x)是個凸函式所以可以三分

考慮分情況考慮,如果lmid和rmid在極值的一側,讓遠離極值的一側往上跳肯定沒問題,否則哪邊往上跳都可以

#include #define maxn 1000005

#define ll long long

#define inf 0x3f3f3f3f

#define i inline

#define re register

#define eps 1e-10

using namespace std;

int read()

int n;

double a[maxn],b[maxn],c[maxn];

int main()

double l=0,r=1000.0,sl,sr;

while(lsr) l=lm;

else r=rm;

}printf("%.3lf\n",sl);

return 0;

}

字尾陣列 O n 三分實現

比起wc關於字尾陣列的倍增法,要更有效率,由於模版使用的是指標,所以在new和delete處效率會有所消耗 來自nit的字尾陣列模版 注意在字串間加入特殊符號進行區分 避免lcp越界 samlpe測試為hdu 1403 include iostream include cmath include c...

二分 三分模板

適用於 單調函式 單調增或單調減 基本思想 給定9個數,由小到大排列,從這9個數中找出某乙個確切的數 比如4 偽 int binary sreach int a,int left,int right,int x if a left x return left return 1 給你三個陣列a,b,c...

二分和三分

三分二分,乙個簡單而神奇的演算法,可以簡化時間複雜度,但是用二分有乙個條件,就是我們進行二分的序列必須有單調性。原理 aa中找乙個數x xx 保證x xx一定存在 我們可以用樸素演算法,直接從頭到尾找一遍,時間複雜度o n o n o n 如果當序列a aa的長度十分大時,這種方法就不好用了。二分橫...