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 我們就可...