我們建乙個大根堆,存最小的數到第m小的數,第m小的數就理所當然的是堆頂了。
每次我們只需要比較新加進來的數比堆頂大還是比堆頂小,如果比堆頂小,將原來的堆頂丟掉,將新的數塞進去;
如若比堆頂大,根據該題題意,a>0 && b>0,函式對稱軸x = −b / 2 ∗ a恆小於0,可以得出,y在x > 0時是單調遞增的
所以接下來的函式值y只會大不會小,可以直接break掉了;
由於我們儲存的時候用的是大根堆,所以記得要逆序輸出,將m個數從小到大輸出;
#include#include最小函式值using
namespace
std;
int ans[10010
];priority_queue
, less > q; //
最大堆int
main()
else
break
; }}}
for(int i = 1; i <= m; i++)
for(int i = m; i >= 1; i--)
return0;
}
洛谷 P2085 最小函式值
有n個函式,分別為f1,f2,fn。定義fi x ai x 2 bi x ci x n 給定這些ai bi和ci,請求出所有函式的所有函式值中最小的m個 如有重複的要輸出多個 輸入格式 輸入資料 第一行輸入兩個正整數n和m。以下n行每行三個正整數,其中第i行的三個數分別位ai bi和ci。ai 10...
P2085 最小函式值 洛谷
有n個函式,分別為f1,f2,fn。定義fi x ai x 2 bi x ci x n 給定這些ai bi和ci,請求出所有函式的所有函式值中最小的m個 如有重複的要輸出多個 輸入格式 輸入資料 第一行輸入兩個正整數n和m。以下n行每行三個正整數,其中第i行的三個數分別位ai bi和ci。ai 10...
洛谷P2085 最小函式值
題目大意 有n個函式,分別為f1,f2,fn。定義fi x ai x 2 bi x ci x n 給定這些ai bi和ci,要求出所有函式的所有函式值中最小的m個 如有重複的要輸出多個 解題思路 因為 n,m leq 10000 暴力列舉肯定是不可取的。我們發現,fi x 一定不會大於fi x 1 ...