LGOJ P2085 最小函式值

2022-07-25 05:54:08 字數 1251 閱讀 1755

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 )\)則\(now[i]= \lfloor - \frac \rfloor\)

定義乙個multisets;

其中,node:

struct node

node(int value, int i_f)

bool operator<(const node &o) const

};

val存放函式值,i表示這是這是\(i\)號函式,也就是\(f_i(x)\);

將\(n\)個函式懟入s,內部順序按照\(f_i(now[i])\)公升序;

以下內容執行\(m\)次:

每次取s的頭,也就是當前最小值,輸出頭的val,並記錄一下這個函式是\(cur\)號函式;

\(f_(x)\)對應的\(now[cur]++\),把\(node(f_(now[cur]),cur)\)扔s裡;

code:

#include using namespace std;

const int n = 10005;

int n, m, k;

int now[n], a[n], b[n], c[n], cnt[n];

struct node

node(int value, int i_f)

bool operator<(const node &o) const

};multisets;

vectorans;

inline int f(int i, int x)

inline int sym(int i)

int main()

for (int i = 0; i < ans.size(); i++)

cout << ans[i] << ' ';

return 0;

}

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

luogu2085 最小函式值

時空限制 1000ms 128mb 有n個函式,分別為f1,f2,fn。定義fi x ai x 2 bi x ci x n 給定這些ai bi和ci,請求出所有函式的所有函式值中最小的m個 如有重複的要輸出多個 輸入格式 輸入資料 第一行輸入兩個正整數n和m。以下n行每行三個正整數,其中第i行的三個...

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