洛谷 P1484 种树(带悔贪心)

这篇博客介绍了洛谷P1484种树问题的解决方案,采用贪心策略,每次选择最大值进行种树。通过分析,博主指出在选择某个值后,其两侧的值要么同时被选,要么都不选。通过消除选择影响,将数值重新组合,利用大根堆维护最优解。需要注意的是,负权值不能被选择,以免降低结果。博客提供了具体的思路和代码实现。
摘要由CSDN通过智能技术生成

题目链接:

https://www.luogu.com.cn/problem/P1484

思路:

贪心的每次选择一个最大值种树,然后会发现如果选择了一个值,那么这个值两边的值都不能被选了。分析影响会发现,他两侧的值要么同时被选中,要么同时不被选中
例如: ……4 5 3……
当选择了5时,如果要调整成选择4的时候要么连3 一起选上,否则选择5一定是更优的选择。
因此考虑将5的影响消除,如果我们把这三个点都删掉,添加一个新的点 权值为 4+3-5,是不是就相当于没有选5而是选择了4和3.依次这样处理。将所有数放入大根堆,每次取出最大值维护,就能得到结果。

代码

#include<bits/stdc++.h> 
using namespace std;
const int maxi=1e6+7; 
typedef long long ll;
struct yhh{
   
    ll p;
    int id;
    bool operator<(const yhh &b) const{
   //定义排序方式 
        return p < b.p;
    }
};
int n,k,pre[maxi],nxt[maxi],del
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值