P2085 最小函式值 洛谷

2022-05-06 19:30:10 字數 1313 閱讀 1776

有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 #include 

#include

#include

#define maxn 1000015

using

namespace

std;

inta,b,c,n,m,size;

intheap[maxn];

void put(int

x) }

else

}}void come_in(int a,int b,int

c)int

main()

n--;

while(n--)

}sort(heap+1,heap+m+1

);

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

cout

<"";

return0;

}

優先佇列

#include #include 

#include

#include

#include

#define forr(i,j,k) for(i=j;i<=k;i++)

using

namespace

std;

priority_queue

,less >que;

priority_queue

,greater >queu;

intn,m,a,b,c;

intmain()

n--;

while(n--)

}forr(x,

1,m)

forr(x,

1,m)

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 leq 10000 暴力列舉肯定是不可取的。我們發現,fi x 一定不會大於fi x 1 ...

洛谷 P2085 最小函式值

我們建乙個大根堆,存最小的數到第m小的數,第m小的數就理所當然的是堆頂了。每次我們只需要比較新加進來的數比堆頂大還是比堆頂小,如果比堆頂小,將原來的堆頂丟掉,將新的數塞進去 如若比堆頂大,根據該題題意,a 0 b 0,函式對稱軸x b 2 a恆小於0,可以得出,y在x 0時是單調遞增的 所以接下來的...