給你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的長度十分大時,這種方法就不好用了。二分橫...