点分治是一种树分治算法(昨天听了清华大佬Ryz的课,感觉这个人讲的还可以,虽然后面有蛮多没听懂,比如再套一些七里八里的数据结构) 在解决树上路径满足某种属性的数量统计方面有着很大的作用 点分治的基本思想如下: 考虑到树上的路径对于一个点来说只有两种情况:一是经过这个点,二是不经过这个点 对于不经过这 ...
分类:
其他好文 时间:
2017-03-22 00:56:48
阅读次数:
173
题意: 思路:点分治论文题 我们知道一条路径要么过根结点,要么在一棵子树中,这启发了我们可以使用分治算法。 记 Depth(i)表示点i 到根结点的路径长度, Belong(i) = X ( X 为根结点的某个儿子,且结点i 在以 X 为根的子树内)。 那么我们要统计的就是: 满足 Depth (i ...
分类:
其他好文 时间:
2017-03-08 11:26:12
阅读次数:
189
动态规划(Dynamic Programming, DP)思想启发于分治算法的思想,也是将复杂问题化解若干子问题,先求解小问题,再根据小问题的解得到原问题的解。但是DP与分治算法不同的是,DP分解的若...
分类:
其他好文 时间:
2016-12-20 11:50:44
阅读次数:
200
1 #include<iostream> 2 using namespace std; 3 4 5 void print(int a[],int n) 6 { 7 for(int i=0;i<n;i++) 8 cout<<a[i]<<" "; 9 cout<<endl; 10 } 11 void q ...
分类:
编程语言 时间:
2016-12-19 21:13:26
阅读次数:
297
此题来自《数据结构与算法》,书中一共介绍了四种方法,这里贴出两种。 1.分治递归,对本题来说,虽然有更好的算法,但是用此题理解分治算法感觉挺有用 2.遍历整个数组,每个遍历的值保存入thissum,当thissum<0时,thissum置零;当thissum>max时,更新max 这种方法时间复杂度 ...
分类:
编程语言 时间:
2016-12-13 07:17:04
阅读次数:
195
从《Cash》谈一类分治算法的应用 分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同.求出子问题的解,就可得到原问题的解.分治算法非常基础,但是分治的思想却非常重要,本文将从今年NOI的一道动态规划问题Cash开始谈如何利用分治思想来解决一类与 ...
分类:
编程语言 时间:
2016-12-11 12:47:45
阅读次数:
245
基本思想 快速排序也是基于分治算法得。步骤如下: (1)选择一个基准元素,通常选择第一个元素或者最后一个元素; (2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的元素值比基准值大; (3)此时基准元素在其排好序后的正确位置; (4)然后分别对这 ...
分类:
编程语言 时间:
2016-11-09 12:20:40
阅读次数:
300
基本思想 分析归并排序之前,我们先来了解一下分治算法。 分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。 分治算法的一般步骤: (1)分解,将要解决的问题划分成若干规模较小的同类问题; (2)求解,当子问题 ...
分类:
编程语言 时间:
2016-11-09 11:38:07
阅读次数:
291