堆 120820測試 最小函式值

2022-05-21 03:32:55 字數 1302 閱讀 2951

problem 2 :最小函式值

(minval.pas/c/cpp)

有n個函式,分別為f1,f2,...,fn。定義fi(x)=ai*x^2+bi*x+ci(x∈n*)。給定這些ai、bi和ci,請求出所有函式的所有函式值中最小的m個(如有重複的要輸出多個)。

輸入資料

第一行輸入兩個正整數n(n<=10000)和m(m<=10000)。

以下n行每行三個正整數,其中第i行的三個數分別位ai、bi和ci。輸入資料保證0輸出資料

輸出將這n個函式所有可以生成的函式值排序後的前m個元素。

這m個數應該輸出到一行,用空格隔開。

樣例輸入

3  10

4  5  3

3  4  5

1  7  1

樣例輸出

9   12  12  19  25  29  31  44  45  54

20%的資料n<=100

100%的資料n<=10000

90%的資料9000<=m<=10000

這一題暴搜,每次dijkstra的話能的30分,時間效率太低

用數學的角度看看,a,b,c 均大於0,所以對稱軸肯定在y軸左邊,所以只需從1開始計算

每個函式都是單調函式,如果當前函式的當前值一直都沒輸出,那麼後面的根本就不可能,所以不用全部計算

至於記錄答案,可以用優先佇列或者堆來維護,這裡提供堆的c++**

P2085 最小函式值 堆

題目描述 有n個函式,分別為f1,f2,fn。定義fi x aix 2 bix ci x n 給定這些ai bi和ci,請求出所有函式的所有函式值中最小的m個 如有重複的要輸出多個 輸入格式 輸入資料 第一行輸入兩個正整數n和m。以下n行每行三個正整數,其中第i行的三個數分別位ai bi和ci。ai...

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...

洛谷2085 最小函式值(堆)

點此看題面 大致題意 給你 n 個形如 f i x a ix 2 b ix c i a i,b i,c i,x n 的函式,請你求出所有函式的所有函式值中最小的前 m 個值。顯然,我們可以發現乙個性質 對於每乙個函式,它的值肯定隨著 x 的增大而增大。也就是說,最終答案的 x 肯定小於 m 我們就可...