洛谷P2085 最小函式值 minval

2022-05-01 18:45:11 字數 1512 閱讀 9458

p2085最小函式值(minval)

提交該題 討論 題解 記錄

最新討論

題目描述

有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,bi<=100,ci<=10 000。

輸出格式:

輸出資料:輸出將這n個函式所有可以生成的函式值排序後的前m個元素。這m個數應該輸出到一行,用空格隔開。

輸入輸出樣例

輸入樣例#1

3 10

4 5 3

3 4 5

1 7 1

輸出樣例#1

9 12 12 19 25 29 31 44 45 54

說明

資料規模:n,m<=10000

分析:這是一道有關二次函式的題目,如果沒有相關的概念,請去看初三數學課本!首先a,b,c都是正整數,那麼可以知道對稱軸都在y軸左邊,然後x又是正整數,在對稱軸右邊的函式值都是單調遞增的,所以當x取1的時候,有最小函式值.

因為x是正整數,當乙個點被處理完後,x+=1.加入到優先佇列中,為什麼要用優先佇列呢?很簡單,因為每次都要取最小值,根據我的理解,如果乙個題目需要很多次排序,那麼應該就是使用優先佇列.可以保證答案最優.

#include #include 

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 100010

;priority_queue

< pair, vectorint, int> >, greaterint, int> > > q; //

讓優先佇列從小到大彈出

intn, m,x[maxn];

struct

node

f[maxn];

int jisuan(int i, int

x)int

main()

for (int i = 1; i <= m; 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 ...