最小函式值

2021-09-25 23:54:33 字數 1117 閱讀 5203

題目描述

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

輸入格式

輸入資料:第一行輸入兩個正整數n和m。以下n行每行三個正整數,其中第i行的三個數分別位ai、bi和ci。ai<=10,bi<=100,ci<=10 000。

輸出格式

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

輸入輸出樣例輸入

3 10

4 5 3

3 4 5

1 7 1

輸出9 12 12 19 25 29 31 44 45 54

一般看到題目都會去想,對於每個函式,x列舉到多少呢?太大會tle 太小又會 wa。。。。。。。。

這題的思路其實很簡單,事實上就是乙個裸的堆題。

我們觀察到題目中 x,a,b,c均為正整數,這樣顯然二次函式對稱軸在 y 軸左側,在 [1,+∞)區間內為增函式。

這樣思路就很明確了,取每個函式在 x=1 的值進堆,每一次取堆頂元素,將這個元素所在的函式 x+1,重新進堆,這樣就做完了這道題目。

別問我為什麼不手寫堆,因為不會!!!(qaq tcl)

#pragma gcc optimize(2)

#include

#define int long long

using namespace std;

int n,m,cnt;

struct node

;bool operator <

(node s1,node s2)

priority_queue pq;

intf

(int a,

int b,

int c,

int x)

signed

main()

);}while

(cnt}puts(""

);return0;

}

最小函式值

給n個函式。fi x ai x 2 bi x ci 給定這些ai bi和ci,請求出所有函式的所有函式值中最小的m個。3 10 4 5 3 3 4 5 1 7 1 9 12 12 19 25 29 31 44 45 54 維護乙個小根堆,裡面的值為,按照要求每次輸出堆頂,並將堆頂函式中的x加1再下調...

最小函式值

最小函式值 time limit 1000ms memory limit 65536k total submit 121 accepted 54 description 問題描述 有n個函式,分別為f1,f2,fn。定義fi x ai x 2 bi x ci x n 給定這些ai bi和ci,請求出...

最小函式值

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