贪心

原理

通过证明局部最优解可以得出全局最优解,从而 \(O(n)\) 解决问题。

常用数学归纳法证明贪心正确性。

模板

\(x,y\),计算\(f(x \text{先于} y),f(y \text{先于} x)\),令\(f(x \text{先于} y)>f(y \text{先于} x)\) ,解出贪心公式。

区间类

区间覆盖

选取尽量少的区间使得区间[s,t]被覆盖

贪心策略:按左端点排序,每次选取左端点被覆盖的、右端点最长的区间

区间选点

选取尽量少的点,使得每个区间都至少有k个点

贪心策略:按右端点排序,每次选取未选区间中右端点最小的区间的最靠右的k-now个点(now为该区间已选点数)

活动安排

选取尽量多的活动,这些活动时间段不重合

贪心策略:按右端点排序,选取右端点最小的一个,把和它重合的区间删掉

调度安排类

乘数和类

给一个序列\(\{w_i\}\),求 \(\sum^n_{i=1}w_iw_{i+1}\) 最大的排列方案

贪心策略

大数跟大数乘

从大到小排序即可

例题

posted @ 2024-10-31 17:02  Zhone_lb  阅读(17)  评论(0)    收藏  举报