动态规划( dynamic programming )算法是解决多阶段决策过程最优化问题的一种常用方法,难度比较大,技巧性也很强。利用动态规划算法,可以优雅而高效地解决很多贪婪算法或分治算法不能解决的问题。动态规划算法的基本思想是:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些...
分类:
其他好文 时间:
2015-05-19 10:14:23
阅读次数:
155
题目大意:给出一棵N个点的树,每条边都有相应的权值。
先给出K,要求你找出权值小于等于k的(u,v)对解题思路:具体的思路可以参考漆子超的《分治算法在树的路径问题中的应用》这篇论文。#include
#include
#include
using namespace std;
#define maxn 10010
vector Nod...
分类:
其他好文 时间:
2015-05-16 09:11:42
阅读次数:
158
题目大意:和poj 1741的那题和类似,求树上节点之间的距离小于等于k的节点对有多少对解题思路:具体可参考:《分治算法在树的路径问题中的应用——漆子超》
给这题的输入坑了,注意输入,不然会超时#include
#include
#include
using namespace std;
#define maxn 40010
int vis[m...
分类:
其他好文 时间:
2015-05-16 09:10:52
阅读次数:
111
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子...
分类:
编程语言 时间:
2015-05-13 19:36:34
阅读次数:
150
递归式与分治方法是紧密相关的,因为使用递归式可以清晰的刻画分治算法的运行时间。主方法如下:T(n) = aT(n/b) + f(n)a>=1 b>1 f(n) 是给定的函数。这种形式的递归式很常见。刻画了一个分治算法。生成a个子问题。每个子问题是原来的1/b。分解和合并步骤共消耗f(n)主方法是计算...
分类:
其他好文 时间:
2015-05-13 16:12:02
阅读次数:
88
算法理论1. 算法的几个特征是什么。2. 算法复杂性的定义。大O、θ、、小o分别表示的含义。3. 递归算法的定义、递归算法的两要素。4.分治算法的思想,经典的分治算法(全排列、二分搜索、归并排序、快速排序、线性时间选择、最接近点对问题)。5. 动态规划算法解题框架,动态规划算法的两个要素是什么?备忘...
分类:
编程语言 时间:
2015-04-29 11:27:25
阅读次数:
228
题目描述:
有一个没有排序,元素个数为2n的正整数数组,要求:如何能把这个数组分割为元素个数为n的两个数组,并使两个子数组的和最接近。
分析:
题目的本质就是要从2n个整数中找出n个,使得它们的和尽可能地靠近所有整数之和的一半。
解法一和二:
伪代码如下:
定义:Heap[i]表示存储从arr中取i个数所能...
分类:
编程语言 时间:
2015-04-26 09:26:23
阅读次数:
158
解法一:
先明确题意:
1.题目说的子数组,是连续的。
2.题目只需要求和,并不需要返回子数组的具体位置。
3.数组的元素是整数,所以数组可能只包含有正整数,零,负整数。
举几个例子:
数组:[1,-2,3,5,-3,2]应返回8.
数组:[0,-2,3,5,-1,2]应返回9。
数组:[-9,-2,-3,-5,-3]应返回-2。
最直接的方法:...
分类:
编程语言 时间:
2015-04-24 09:16:06
阅读次数:
180
分治算法即将一个问题划分成多个子问题求解,最后的结果就是几个子问题的合集,通常图形类的算法,尤其是2的几次方数组问题可以优先考虑。汉诺塔和二分搜索都是分治算法的思想,个人觉得最好体现分治算法的demo是棋盘覆盖问题,代码如下:#include #include #define SIZE 4stati...
分类:
编程语言 时间:
2015-04-23 23:21:12
阅读次数:
235
动态规划(dynamic programming)与分治算法相似,都是通过组合子问题的解来求解原问题(在这里,“programming”指的是一种表格法,并非编写计算机程序)。分治方法将问题规划为互不相交的子问题,在将他们组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子...
分类:
其他好文 时间:
2015-04-19 19:28:45
阅读次数:
126