您的位置:首页 > 其它

近期“贪心”题目总结

2017-10-17 17:24 211 查看
“贪心”实际上就是找一种方法,使我们想要得到的更多,更优

(求最值,but求最大的最小,最小的最大就是二分的活了)

挂缀:重量最小(每一个挂坠承重有限),求挂缀最长(有限制因素)

建筑抢修:(每一个任务)时间有限,求任务最多

//特点:
从做法(用到优先队列)及思路中都能看出,“挂缀”与“建筑抢修”实际上是一类题,有一个或者几个限制因素,
阻止我们达到最优的状态(比如说:所有挂缀都用上,所有任务都完成),限制因素有大小之分,
如果有多个限制因素,不妨试一下样例,或者自己造几个样例,像“建筑抢修”分析need和rest
两个方案时那样分析,样例都过不了,肯定不是最主要也就是起决定性作用的那个限制因素,如果有一个的话,
那很显然,这唯一一个限制因素就是起决定性作用的,看怎样让它影响最小。

//对于有2个限制因素的:
我们把起决定性作用的因素称为x,非决定性因素称为y,我们先按x从大到小 或者是 从小到大排序
(这个得看题目要求,这两个题是从小到大排x(“建筑”是这样,挂缀么maybe,忘了...),
万一出一个题是求重量什么的最大(不太合理的例子,反正是这么个意思),那就不一定这样排了)依次取出其所对应的对象,
同时累计产生的对下一个的影响(比如:等待时间tot,现在每个挂缀剩余的承重(当前这一串的总重量)),
如果影响太大以至于下一个无法满足(完成/加入挂坠),就找一个替换,因为我们的目的是更多(只针对于这两个题而言),
两个影响因素不一定大就都大小就都小,也许换下来,当前这个就能被满足,就比如a目前不能满足,
但它的need比已经完成的b小,由于“影响(tot)”取决于need,这样一换反倒把它减小了,为后面的任务留下更多的时间,
(好神奇\(^o^)/~),何乐而不为呢qwq

//在没有遇到maybe能替换的情况之前:用决定性因素“挑”,也就是“ 刷 “人” ”
//替换:用非限制性因素

//对于有多个限制因素的:
/*虽然没遇到这种情况*/,不过应该与两个的差不多,实在不行找一个第二决定性因素,或者在替换时比较多个非限制因素,
可能会出现过某个因素一样,只比较剩下几个的情况

//对于有1个限制因素的:
@%……&&#¥%@%还没做到这类题%…………以后补充¥%¥%@%别忘啦¥%¥……¥#……!!!!!!


独木桥:耗费时间的最长和最短

//特点:又求最好,又求最坏,一个正面来贪心,一个反面来贪心

!!!!!!这个好像就是只有一个影响因素的(收回刚才的话),时间的长短只取决于他怎么走,因为我们只是锁定
某个特殊位置的士兵(minn的时候是两个,但是最终只取一个,所以都一样啦),只关注他的走法就好了,而且
求的maxx和minn互相都不会产生让对方减小或是增大之类的影响,是相互独立的,那就当两个问题来做就好了,
就算是所选的是同时个士兵也不要紧(谁让他这么有特点尼(#^.^#))


painter:花最少的钱,得到所有所需要的颜料

这个由于灰色只能有其他颜色合成,完全受其它颜色影响,姑且算一个限制,因为求的就是花最少的钱,
钱数没有那么明显的被限定的意思,自己先当做一类

//特点:每个对象之间影响很大(比如说:灰色的产生离不开其它颜色)

刚开始啥也没有嘛,这个是不买不行的啦,但是其余的,就得少买了,想让花的钱少,就得买的少,这一点是肯定的,
既然要少买,就得最大限度的利用当前剩下的,也就是满足除了灰色以外其它的颜色之后(其它颜色的只能通过买买到够我们用,
不得不花钱),因为每种其它颜色剩下的不一样多,所以我们不能取某一个的xml来给它配上另两个xml的其它颜色,
∵很可能不够,那就只能一毫升一毫升地取喽,但是,如果剩下的最多的三个都有为零的,那就又不得不买了qwq

这个好像也能用优先队列来着,当时用的sort吧,优先队列倒是不用一遍一遍地来回排序,q.push(),q.pop()也不难打,
不过带“.”的都觉得麻烦,但是耐不住它好用啊......


不管是二分的活,还是贪心的活,都是我的活呀
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: