今天看了一下贪心算法,贪心算法没有具体的算法框架。贪心算法主要找当前看来最好的解,没有考虑整体最优。得到的只是局部最优解。贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。所以对所采用的贪心策略一定要仔细分析其是否满足...
分类:
编程语言 时间:
2014-10-27 21:13:43
阅读次数:
322
贪心策略适用的前提是:局部最优策略能导致产生全局最优解。
实际上,贪心算法适用的情况很少。一般,对一个问题分析是否适用于贪心算法,可以先选择该问题下的几个实际数据进行分析,就可做出判断。...
分类:
编程语言 时间:
2014-10-27 15:42:47
阅读次数:
183
一、什么是贪心贪心算法嘛、、、就是在对某个问题求解时,总是做出在当前看来是最好的选择In other wors,并不是从整体最优上加以考虑,而是在获得某种意义上的局部最优解二、贪心算法的适用前提局部的最优解能导致最后整体的最优解,即局部的最优解不受该部分以外的东西的影响对于贪心算法,我们需要证明:整...
分类:
其他好文 时间:
2014-10-26 22:32:01
阅读次数:
209
这三种算法总的来说,刚开始看的时候不知道怎么下手,但是看多了也会有那么一点儿感觉。分治法是这三种算法里面都有的思想,动态规划和贪心都是将问题分解成子问题求解,但动态规划里面的子问题都带有联系,而贪心算法里面的子问题都相对独立,唯一不同的是,贪心算法要首先想出一个解决方案来构造求解最优解的过程。...
分类:
其他好文 时间:
2014-10-23 20:49:49
阅读次数:
241
其实这题还是挺简单的,因为移动k个星球后,这k个星球的权值就可以变为0,所以只有剩下的本来就是连着的才是最优解,也就是说要动也是动两端的,那么就O(N)枚举一遍动哪些就好了。我是在杭电oj题目重现的比赛上做这题,因为之前听人说现场赛时有人用n^2的算法蹭过了,所以我不断蹭,蹭了一个小时都没蹭过。。。...
分类:
其他好文 时间:
2014-10-23 01:17:53
阅读次数:
148
题意:给定你一条直线,直线上面有n个点,你可以移动k个点,求所有点到重心距离的平方和最小值为多少。解题思路:这里可以知道 保持一段不移动然后把所有的点都移动到这一段的重心才是最优解,那我们很容易想到枚举这一段的端点,但是如果枚举端点,时间复杂度会高达n^2,所以我们要知道区间之间的关系,假设 lsu...
分类:
其他好文 时间:
2014-10-22 20:07:49
阅读次数:
258
贪心的思想:通过每一步都找最优解决问题。因为每一步最优,最后是最优的概率很大。部分背包的思想就是:把最值钱的往包里装,装得越多越好。可见设计算法的人好贪啊,嘿嘿~样例:n种东西,重量是Mi,价值是Vi,单价就是两者之比Pi。C为小包包的容量。最后算出的结果是对应取Xi放到包中。代码如下:#inclu...
分类:
编程语言 时间:
2014-10-22 18:05:00
阅读次数:
233
打一次鼹鼠必定是从以前的某一次打鼹鼠转移过来的
以打每个鼹鼠时的最优解为DP方程
#include
#include
#include
#define N 10005
using namespace std;
int n,m,ans;
int f[N],t[N],x[N],y[N],mx[N];
int main()
{
scanf("%d%d",&n,&m);
fo...
分类:
其他好文 时间:
2014-10-22 10:06:19
阅读次数:
176
一、基本概念
类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。
所谓“分支”就是采用广度优先的策略,依次搜索E-结点的所有分支,也就是所有相邻...
分类:
编程语言 时间:
2014-10-20 19:31:17
阅读次数:
225
一、基本概念
所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。
贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。所以对所采用的贪心策略一定要仔细分...
分类:
编程语言 时间:
2014-10-20 17:21:26
阅读次数:
201