一、概念:贪心法(Greedy algorithm),是在每一步选择中都采用在当期状态下最好或最有的选择,从而希望导致结果是最好或者最优的算法。 比如在旅行推销员问题中,如果履行原每次都选择最近的城市,这就是一种贪心算法。 贪心算法在有最优子结构的问题中,尤为有效。最优子结构的意思是局部最优解...
分类:
其他好文 时间:
2014-08-04 13:24:47
阅读次数:
206
解题思路:本题为动态规划题目,用01背包即可解决。 其实本题一眼看去像是贪心的题目,但是用贪心解却是错的,因为每个菜式的价钱一定,不可分隔。若用贪心,可能买了教贵的菜,剩下的钱不能买任意菜式,买某些便宜的菜,又使得贵的菜拉掉,最终不能最大限度的使用m-5元钱。 首先 ,按要求输入一组数据,输入完.....
分类:
其他好文 时间:
2014-08-04 13:23:07
阅读次数:
246
N个顶点,M条边,每条边可能为黑色或是白色( 0 or 1 ),问有没有可能用为斐波那契数的数目的白色边构成一棵生成树。所以需要删掉图中的环,根据每次删掉的边有一个白色边的上限和下限,判断一下中间有没有斐波那契数就可以了。实现方法是根据颜色排序,先放黑色边得到的是最小数目的白色边构成的生成树,先放白色边得到是最大数目的白色边构成的生成树。
#include
#include
#include
#...
分类:
其他好文 时间:
2014-08-04 11:03:47
阅读次数:
231
【题目描述】:给定n个小岛以及这些小岛的位置,并输入雷达的辐射面积,问最少需要多少个雷达站才能覆盖所有小岛?【思路分析】:本题首先想到的是运用贪心算法,但是算法想到了如何贪心?这道题我自己开始做之时只有一点思路,就是让每一个雷达覆盖较多的点,但是如何较多覆盖,这就是典型的数学问题了,自己没有思索出来...
分类:
其他好文 时间:
2014-08-04 01:41:56
阅读次数:
290
单源最短路径
给定一带权图,图中每条边的权值是非负的,代表着两顶点之间的距离。指定图中的一顶点为源点,找出源点到其它顶点的最短路径和其长度的问题,即是单源最短路径问题。
Dijkstra算法
求解单源最短路径问题的常用方法是Dijkstra(迪杰斯特拉)算法。该算法使用的是贪心策略:每次都找出剩余顶点中与源点距离最近的一个顶点。
算法思想
带权图G=,令S为已确定了最短路径顶点的集合,则可用V-S表示剩余未确定最短路径顶点的集合。假设V0是源点,则初始 S={V0}。...
分类:
其他好文 时间:
2014-08-03 23:24:16
阅读次数:
392
HDU 4004 The Frog's Games(基本算法-贪心,搜索-二分)
题目大意:
长为L的河流,中间有n个石头,告诉你石头的位置,青蛙的跳跃能力至少为多少中途跳m次能跳过去?
解题思路:
二分+贪心的题目,因为青蛙的跳跃能力越强需要的次数就越少,因此青蛙的跳跃能力有单调性,所以二分枚举青蛙的跳跃能力,在判断这个能力下是否能够跳过去,这个用贪心解决,每次在这个能力下尽可能跳到远的石头上,最后看m次是否跳到了对岸。...
分类:
其他好文 时间:
2014-08-03 23:19:06
阅读次数:
314
HDU 4001 To Miss Our Children Time (动态规划)
题目大意:
有n块砖头,每块砖头有长,宽,高和型号,问你最多建多高?
型号0的特点是:长度>=它下面砖头的长度 且 宽度>=它下面砖头的宽度
型号1的特点是:长度>=它下面砖头的长度 且 宽度>=它下面砖头的宽度 且 面积>=它下面砖头的面积
型号2的特点是:长度>它下面砖头的长度 且 宽度>它下面砖头的宽度
解题思路:
先排好序,排序方法贪心的方法,先按长后按宽从小到大排,如果长宽相等就按照型号从大到小排,如果再相等,...
分类:
其他好文 时间:
2014-08-03 23:18:16
阅读次数:
373
起床困难综合症(BZOJ 3668) 送分题,直接从高位向低位贪心。 魔法森林(BZOJ 3669) 一个容易想到的办法就是枚举A的最大值,以B作为权值求最小生成树。暴力的话要T的。如果从小到大枚举A的最大值,每次仅会添加一些新的边,所以自然想到用LCT维护。本来还可以考一下LCT的,结果考场上A此...
分类:
其他好文 时间:
2014-08-03 23:12:26
阅读次数:
365
# include
# include
# include
using namespace std;
int fa[10010];
struct node
{
int p;
int d;
};
struct node a[10010];
bool cmp(node a1,node a2)//利润从大到小
{
return a1.p>a2.p;
}
int find(int x)
{...
分类:
其他好文 时间:
2014-08-03 10:16:25
阅读次数:
208
题目链接:uva 1521 - GCD Guessing Game
题目大意:给定一个数N,现在又一个数x,在1~N之间,现在每次可以猜一个数a,返回gcd(x,a),问说最少猜几次可以确定x。
解题思路:其实就将1~N里面的素数都要考虑一遍,因为有一个N的限制,所以每次选出来的素数的积不大于N即可。
#include
#include
#include
using name...
分类:
其他好文 时间:
2014-08-02 23:27:44
阅读次数:
302