poj 1042(贪心)
摘要:http://poj.org/problem?id=1042 寒假里做的第一道题,结结实实的被特给虐了。。华丽丽的WA了不下20次,最后没办法了还是让别人给找出来的错!悲催... 这题用贪心,枚举到第i个岛结束,从总时间里减掉走到这个岛所用时间。然后从前i个岛里贪心出最大值。 错在两个地方: 1. 题目要求多余的时间放到第一个岛上,我在选取的max为负里加上了cur=0,把时间直接加到了第一个岛上。 其实这里不需要单独处理,在贪心前已经让cur=0,如果max<0.fish,cur不改变。简直多此一举 2. fish数量为负时的清零跟递减的顺序,我是清零后使cur=0,然后对f[0]递.
阅读全文
posted @
2012-01-16 22:49
追逐.
阅读(434)
推荐(0)
hdu 3661
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3661貌似是道很简单的贪心,结果让我搞的。。。唉,不在状态啊...#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;intat[1005],bt[1005];intcmp(inta,intb){returna>b;}intmain(){intn,t,i;while(~scanf("%d%d",&n,&t)){intsum=0;for(i=0;i
阅读全文
posted @
2011-11-19 19:18
追逐.
阅读(236)
推荐(0)
poj 1328 Radar Installation
摘要:题目链接:http://poj.org/problem?id=1328 题意: 设x轴为海岸,下方为陆地,上方为海。海上有n个岛屿,现在需要用雷达将所有的岛屿覆盖起来。给定岛屿个数及每个岛屿的坐标,给定雷达覆盖半径,求覆盖所有岛屿所需雷达最小数。(PS:雷达只能安置在海岸上) 设将雷达建在每个岛屿上,求出覆盖海岸的区间。将这些区间以左端点从小到大排序,采用贪心策略。先将雷达建在左端区间的右端点上,看雷达是否能覆盖到下一区间,若能,更新此雷达建设点为两区间右端点的最小值(保证雷达能覆盖所有遍历过的区间);若不能,则只能增加雷达个数,并将建设点选为下一区间右端点。 WA了好多次...
阅读全文
posted @
2011-09-05 23:33
追逐.
阅读(309)
推荐(0)
贪心算法
摘要:贪心算法概念 贪心算法是一种对某些求最优解问题的更简单、更迅速的设计技术。用贪心法设计算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,而不考虑各种可能的整体情况,它省去了为找最优解要穷尽所有可能而必须耗费的大量时间,它采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题, 通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要保证能获得局部最优解,但由此产生的全局解有时不一定是最优的,所以贪心算法不要回溯。 贪心算法是一种改进了的分级处理方法。其核心是根据题意选取一种量度标准,然后将这多个输入排成这种量度标准所要求
阅读全文
posted @
2011-08-17 16:06
追逐.
阅读(351)
推荐(0)
采用贪心策略计算最优二叉树
摘要:题目: 有n件重量不同的物品,现要求耗费最少的体力将它们合并成一堆。每一次合并可以把两堆物品合并成一堆,消耗的体力等于两堆物品的重量之和。输入:第一行输入物品个数n,以下n行依次输入各物品重量。输出: 输出耗费的最小体力。 用堆排序每次将两个权值最小的结点取出,从结点集中删除并将合并后的结点加入节点集合,合并后的结点权值为这两个被删除结点的权值之和,累加新结点的权值。重复计算直到只剩随后一个结点为止,最后所累加的权值和即为所求解。#include<iostream>using namespace std ;int a[100] ;void heap(int s, int n){ /
阅读全文
posted @
2011-08-17 15:05
追逐.
阅读(592)
推荐(0)
任务调度 简单贪心
摘要:题意: 有N个任务,每个任务都花费一个单位的时间来完成,每个任务都有规定的时间期限,超出期限完成则要罚款。求所能使罚款最小的任务组合及最小罚款金额。 输入: 一个整数N代表任务个数,下面N行分别有两个整数,第一个为时间期限,第二个为超时罚款金额。输出: 期限内完成的任务编号,期限外完成任务编号,罚款数。 本题关键在罚款金额,所以要尽可能的使罚款金额大的任务先完成,对任务根据罚款金额从大到小排序,依次处理各个任务。得到可提前完成的任务后,对任务根据时间期限排序,使期限大的任务尽可能的靠后,这样能保证提前完成的任务数量最大。代码:#include<iostream>#include&l
阅读全文
posted @
2011-08-14 12:36
追逐.
阅读(791)
推荐(0)
乘船问题 简单贪心
摘要:题意: 给定船的最大载重量和旅客人数,以及每个旅客的体重,每条船最多坐两人,求让每个旅客都上船所需船数量的最小值。 由于旅客体重范围较小,可直接遍历所有可能的体重,省去了对旅客体重值的排序。用一个数组记录每个体重旅客的人数,根据较轻体重的旅客与较重体重旅客的最佳搭配得到最优解。代码:#include<iostream>#include<cstring>using namespace std ;int main(){ int a[300] ; int m, n, i, j ; cin >> m >> n ; memset(a, 0, sizeof(
阅读全文
posted @
2011-08-14 12:36
追逐.
阅读(643)
推荐(1)
计数排序 简单贪心
摘要:题意: 随意给定一串数字1,2,3,求最少多少次交换操作可以将其按升序排列,输出最少次数以及每次交换的位置。代码:#include<iostream>#include<cstring>using namespace std ;int min(int a, int b){ if(a>b) return b ; else return a ;}int main(){ int n, i, j ; int a[1001], b[1001], s[4][4] ; cin >> n ; int num[4] ; int sum, key ; memset(num,
阅读全文
posted @
2011-08-14 12:35
追逐.
阅读(222)
推荐(0)