luogu2085 最小函式值

2021-08-27 07:56:27 字數 1243 閱讀 2068

時空限制    1000ms/128mb

有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

法一:手動堆

#include#includeusing namespace std;

const int n = 10005;

int n,m,ans[n];

struct nodef[n];

int find(int a,int b,int c,int x)

void adjust(int i,int m)

else break; }}

int main()

for (int i=n/2; i>=1; i--) adjust(i,n); //構建小頂堆

for (int i=1; i<=m; i++)

for (int i=1; i<=m; i++)

i法二:列舉

#includeusing namespace std;

const int n = 10005, oo = 0x3fffffff;

int n,m,a[n],b[n],c[n],f[n],ans[n];

int find(int a,int b,int c,int x)

int main()

for (int i=1; i<=m; i++)

f[k]++; //x++

} for (int i=1; i<=m; i++)

ireturn 0;

}

luogu2085 最小函式值

有n個函式,分別為f1,f2,fn。定義fi x ai x 2 bi x ci x,ai,bi,ci n 給定這些ai bi和ci,請求出所有函式的所有函式值中最小的m個。審題!a i,b i 0 這說明對稱軸在y軸左側!所以正半軸上x值是單調遞增的!這樣我們就可以想到用單調佇列來解決這個問題了。i...

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

LGOJ P2085 最小函式值

p2085 最小函式值 用 now i 記錄使得當前狀態下 f i x 取得最小值的自變數的值。初始化 初始狀態,我們有 n 個二次函式 f x a ix 2 b ix c i,x in mathbb 對稱軸 frac in infty 1 則 now i 1 對稱軸 frac in 1,infty...