python贪心刷题

博主分享了使用Python进行贪心算法解题的经验,包括线段覆盖、区间覆盖、买二赠一等问题,探讨了不同贪心策略的适用场景,并通过实际题目解析展示了二分查找在解题中的应用。同时,博主提到了在购物、管道、答疑、翻硬币和防御力等题目的思考过程,指出排序和判断条件的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置一个vip隐私,夹杂一些碎碎念......涉及到一些转自其他佬的题解

🚩flag为留存,等技术强硬再钻一把......

2024.3.30

65.线段覆盖

看了下文字题解,才知道思路,不然真想不到,但ac只有70%,超时

活动安排问题

        本类题多为求最多活动数量,故对于那种持续时间长的活动不受欢迎,二受欢迎的是尽快结束的活动。由此可以考虑以下三种贪心策略

(1)按最早开始时间贪心。此种方法由于没有考虑活动的持续时间,假若活动a一直不结束,那么其他活动也无法开始

(2)最早结束时间。先选最早结束的时间a,a结束后,再选下一个最早结束的活动

(3)用时最少。先选时间最短的活动,再选不冲突的下一个最短活动。但有可能造成时间的浪费

题解的ac也只有70%,网址正解有个奇怪的东西,然后就100%了,好奇怪.....flag  线段覆盖luogu 

66.区间覆盖

P2082区间覆盖(加强版)洛谷

//wrong。下为正解,注意最后一个for循环的if条件判断,比较的是右边端点 

class data:
    def __init__(self,l,r):
        self.l = l
        self.r = r     
n = int(input())
a = []
for i in range(n):
    s,t = map(int,input().split())
    a.append(data(s,t))
a.sort(key=lambda x:x.l)
edge = -1
ans = 0
for i in range(n):
    if a[i].r >= edge:
        ans += a[i].r - max(edge,a[i]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值