一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后...
分类:
编程语言 时间:
2015-04-10 13:18:09
阅读次数:
147
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3712
题意:
一款游戏,高手玩家不会miss,得分至少为50。记分公式为P = Point * (Combo * 2 + 1),求最多得多少分,最低得多少分。
简单的贪心,贪心策略:最高分先50,再100,最后300。最低分反之即可。
...
分类:
其他好文 时间:
2015-04-07 09:58:05
阅读次数:
143
链接:click here~~
题意:老鼠准备了M磅猫食,准备拿这些猫食跟猫交换自己喜欢的食物。有N个房间,每个房间里面都有食物。你可以得到J[i]单位的食物,但你需要付出F[i]单位的的猫食。 计算M磅猫食可以获得最多食物的重量。
【解题思路】贪心算法,求最优解。将J[i]/F[i]的值从大到小排列,每次取最大的,局部最优,达到全局最优,从而获得最大值。
代码:
// 贪心策略,优...
分类:
其他好文 时间:
2015-04-06 23:18:52
阅读次数:
218
要求在一个DAG中删去不多于k条边,使得拓扑序的字典序最大。
贪心策略:每次删去入度小于res的,序号尽量大的点的入边。
需要用线段树维护区间最小值。
代码:
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int N = 400000 +10;
const ...
分类:
编程语言 时间:
2015-04-03 09:32:36
阅读次数:
157
贪心法:贪?算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪?心策略的选择,选择的贪?策略必须具备?后效性,即某个状态以后的过程不会影响以前的状态,只...
分类:
编程语言 时间:
2015-03-31 22:11:10
阅读次数:
244
problem:
Given an array of non-negative integers, you are initially positioned at the first index of the array.
Each element in the array represents your maximum jump length at that posi...
分类:
其他好文 时间:
2015-03-30 11:19:34
阅读次数:
93
一:简介
(1)回溯法 又称试探法
回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法;基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。
适用场景:当遇到某一类问题时,它的问题可以分解,但是又不能得出明确的动态规划或是递归解法,此时可以考虑用回溯法解决此类问题。回溯法的优点在于其程序结构明确,可读性强,易于理解,而且通过对问题的分...
分类:
编程语言 时间:
2015-03-08 15:42:56
阅读次数:
761
五大常用算法之一:贪心算法 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略....
分类:
编程语言 时间:
2015-03-07 19:54:44
阅读次数:
192
题目链接:BZOJ - 1029题目分析使用一种贪心策略。现将任务按照deadline从小到大排序。然后枚举每一个任务,如果当前消耗的时间加上完成这个任务的时间不会超过这个任务的deadline,那么就完成这个任务。否则,如果完成这个任务的时间比之前选择完成的任务中完成时间最长的一个要短,那么就弹出...
分类:
Web程序 时间:
2015-03-06 20:42:51
阅读次数:
150
dijkstra算法 基本思想:某最短路径上的点与源点之间的最短路径必然也在改最短路径之上,采用贪心策略,每次选取当前最短路径即可。 1 void dijkstra(int n) 2 { 3 int num=1,i; 4 int min,pos; 5 vis[n]=1;...
分类:
编程语言 时间:
2015-03-06 00:54:25
阅读次数:
138