![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心法
文章平均质量分 62
string_win
这个作者很懒,什么都没留下…
展开
-
最优装载问题(贪心)
问题简述:给出n个物体,第i个物体重量为wi。选择尽量多的物体,是的总重量不超过C。分析:最简单的一种了,排序,依次选择每一个物体,直到无法装下为止。附代码如下:#include using namespace std;int a[10010];int main(){ int n, sum = 0, maxn, k = 0; while(cin >> n原创 2015-12-15 16:11:13 · 760 阅读 · 0 评论 -
乘船问题(贪心)
问题描述:有n个人,第i个人重量为wi。每艘船的最大载重量为c,且最多只能乘两个人。用最少的船装载所有人。分析:先按轻重排序,考虑最轻的人,让他和最重的人组合,如果跟最重的无法组合,那么重量往下减,知道可以组合。若所有人都不可以那么所有人都单船。如果有人可以,那么从第二轻的人开始,同时组合是刚刚组合到较重的人编号往下,如此递推即可。题目有点难找,这种时候还是自己脑补吧!T组数据,max原创 2015-12-15 16:59:04 · 4379 阅读 · 1 评论 -
选择不相交区间(活动安排问题)(贪心)(HDU2037)
数轴上有n个开区间(ai,bi)。选择尽量多个区间,使得这些区间两两没有公共点。(这里的区间可以当作是活动的时间)分析:个人理解是每一个区间尽可能选小区间,同时使数轴利用率尽可能大。(1)先对bi进行非减序排序,b1(2)对排序后的顺序进行ai的检查,若被检查的区间的开始小于前一个采用的区间的结束部分,那么就不采用该区间。如果被检查的区间的开始大于前一个采用的区间的结束部分,那么就采用原创 2015-12-15 17:43:52 · 1058 阅读 · 0 评论 -
部分背包问题(贪心) HDU1009
问题描述:有n个物体,第i个物体的重量为wi,价值为vi。在总重量不超过c的情况下让总价值尽量高。每一个物体都可以只取走一部分,价值和重量按比例计算。分析:要综合考虑价格和重量,所以应该从性价比最高的开始拿,就是单位重量价格最高的,知道刚好到达C为止。例题:hdu1009FatMouse' TradeTime Limit: 2000/1000 MS (Java/Others原创 2015-12-15 16:47:53 · 590 阅读 · 0 评论 -
区间选点问题(贪心)
问题描述:数轴上有n个闭区间[ai, bi]。取尽量少的点,使得每个区间内都至少含有一个点(不同区间内含的点可以是同一个)分析:区间包含,小区间满足则大区间也一定满足,步骤和选择不相交区间相似,先对bi进行非上升排序,如果bi相等则保持ai从大到小排序(大区间包含)。从第一个区间开始,取最后一个点,因为取最后一个点可以笼罩的区域最多。然后思路同不相交区间,循环,若后一个区间的起始部分大于前一个原创 2015-12-16 00:02:41 · 868 阅读 · 0 评论 -
最优编码问题(哈夫曼编码)(贪心)
问题描述:给出n个字符的频率ci,给每个字符赋予一个01编码串,使得任意一个字符的编码不是另一个字符编码的前缀,而且编码后总长度(每个字符的频率与编码长度乘积的总和)尽量小。分析:此处策略为设置变长编码,给低频的编码设置较长,高频的编码设置较短。任何一个前缀编码都可以表示为每个非叶节点恰好有两个子结点的完全二叉树。左结点为1,右结点为0。叶节点就代表编码,那么最深处的叶节点的频率应该是原创 2015-12-16 01:39:33 · 4106 阅读 · 0 评论 -
区间覆盖问题(贪心)
问题描述:数轴上有n个闭区间[ai, bi], 选择尽量少的区间覆盖一条指定线段[s,t]。分析:突破口还是区间包含和排序扫描,但是可以先把每个区间在大区间以外的部分去掉,同时相互包含的情况下,此处是考虑大区间。各区间按照ai从小到达排序,如果区间1的起点不是s,那么无解。把在s之前的部分切掉,选择以s为起点的最大区间,以该区间的末尾为s,如此反复,知道最后一次替换后的s大于t为止。代码过原创 2015-12-16 00:53:24 · 451 阅读 · 1 评论