ACM贪心算法GreedyAlgorithm

本文探讨了贪心算法在结构体数组排序、田忌赛马、事件序列、搬桌子、删数问题以及邻居画图中的应用,包括Havel-Hakimi定理,以及如何使用sort()函数进行排序。重点展示了这些场景中如何做出最优决策以解决问题。
摘要由CSDN通过智能技术生成

用处

在对问题求解时,总是做出在当前看来是最好的选择

有贪心算法的地方基本都有排序。


经典问题

硕鼠

        :结构体数组排序。

田忌赛马

        :将田忌和大王的🐎都由好到劣排序,每次比较一匹🐎,假如田忌的🐎好于大王的🐎,那么就使用这一匹🐎;否则就使用最差的🐎。

事件序列问题

        :每次都找不冲突的、最早结束的。

        原因:(反证法证明:至少存在一个时间序列,他包含最早结束的事件)最长时间序列一定包含最早结束的事件。

搬桌子

        :使用标记数组记录每一小段路程的占用次数,然后取这个数组中的最大数。

删数问题

        基本思想:保证高位的数尽量小。

        :从左到右每次比较左右两个数,假如左边的数大于右边的数,那么就把左边的数删掉(做标记),这样就可以使得改动之后的数小于原来的数。(每删掉一次就再循环一趟,假如没的删了就删最后一位)

🐸邻居画图问题

        基本思想可图性判断

                概念:度序列:若把图G所有顶点的度数排成一个序列S,则称S为图G的度序列。

                        可图:一个非负整数组成的有限序列如果是某个无向图的度序列,则称该序列是可图的。

        Havel-Hakimi定理

        :按照Havel-Hakimi定理,假如某一步在数组的末尾出现了负数,那么就不可图;假如最后只剩0,则可图。


sort()函数

sort(数组指针, 数组指针+数组大小, 可选参数);

默认从小到大的排序;使用greater<int>()可以实现从大到小的排序。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值