二分
vufw_795
Mood decides everything.
展开
-
LIS问题——n*logn解法
简述: LIS问题,即最长上升子序列问题,经典的解法有序列DP,通过这个算法,可以获得最长上升子序列的各种详细信息。但是,我们有时候只需要求最长上升子序列的长度,但是o(n^2)的时间复杂度太慢了,我们希望有一种算法,可以更快一点。算法过程 既然动态规划太慢了,那么自然就想到了贪心。下述算法,就是运用了二分+贪心 首先考虑一个序列a:1、3、2、7、5、6、4 (一共7个数),另外一个辅助数组原创 2015-03-07 21:18:50 · 2508 阅读 · 2 评论 -
UVALIVE 2678
题目链接:UVALIVE 2678解题思路: 这题一共有两种做法,一种是二分法,时间复杂度为O( n*log(n) );一种是直接遍历,时间复杂度为O( n )。 二分: 维护一个sum数组,保存数列前 i 项和,之后对每一个大于m的sum[i],使用二分查找找到sum[i]-m的lowerbound。 遍历: 同样维护sum数组,并且维护两个指针,表示满足条件的区间,之后在遍历数组的过程原创 2016-03-03 10:13:53 · 643 阅读 · 0 评论 -
UVA 11090(SPFA判负环)
题目链接:UVA 11090解题思路: 这题需要使用二分法来解决,思路类似与最大值最小化问题,我们可以把求解最小均值环的问题转化成判断负环的问题。二分的过程中,我们可以每次猜想一个最小值,然后使所有的边的权值减去这个最小值,若存在负环,则这个值太大了,最小值需要减小,否则增加。判断负环可以使用Bellman-Ford算法的优化算法,SPFA算法解决。代码设计: 因为最小均值可以为浮点数,而且只需原创 2016-04-04 14:02:40 · 902 阅读 · 0 评论