算法:
反悔贪心,顾名思义就是贪心的时候 反悔。
意思是:如果这一步的贪心 不是全局最优解,就退回去一步,换一种贪心策略。
一般分为 反悔自动机 和 反悔堆。
反悔自动机基本的思路是:每次选择直观上 最接近全局最优解 的贪心策略,若发现最优解不对,就想办法 自动 支持反悔策略。
反悔堆则是:通过 堆 来维护当前贪心策略的最优解,若发现最优解不对,就 退回上一步,更新最优解。
题目:
题单:link
模板题:P4053 建筑抢修
link
首先我们将 (t2) 从小到大排序。
然后用大根堆维护每一个元素。
在贪心的过程中,若发现目前不是最优解,那么就取堆顶元素,来保证正确性。
代码:
#include
using namespace std;
#define ll long long
const ll N=2e5+10;
ll n,ans,s;
priority_queue q;
struct P{
ll t1,t2;
}a[N];
bool cmp(P l,P r){
return l.t2>n;
for(int i=1;i>a[i].t1>>a[i].t2;
sort(a+1,a+n+1,cmp);
for(int i=1;i
机房租用,北京机房托管,大带宽租用,IDC机房服务器主机租用托管-价格及服务咨询 www.e1idc.net