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