题意:
给x、y、k,在[x,y] 范围内最长上升子序列长度是k的数有几个
思路:
模仿 LIS nlogn的想法,这里就只有10个数,进行状压
然后直接搜就好了不用二分
然后按位dp下去就ok了!
代码:
#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"queue"
#inc...
分类:
其他好文 时间:
2014-09-26 13:43:18
阅读次数:
213
两道lca模板题,用的是倍增法,nlogn预处理,logn查询。#include #include #include #include using namespace std;#define maxn 10100struct Edge{ int u,v,w,next;}e[100100];i...
分类:
其他好文 时间:
2014-09-25 20:24:27
阅读次数:
236
为方便自己看懂,所以用的语言比较通俗。 排序算法稳定性解释:如果a=b,a原来在b前面,排序算法后a也在b前面,就是稳定排序。 归并排序:稳定排序,时间复杂度为O(NlogN),将若干有序的数组合并成一个有序的数组...
分类:
其他好文 时间:
2014-09-25 17:30:07
阅读次数:
267
今天我主要学习基于分治思想的归并排序算法,这是分治法的典型应用。废话不多说,下面直切正题。概述:将两个有序数组归并成一个更大的有序数组,我们称之为归并,人们根据这一操作发明了一种简单的递归排序算法:归并排序。归并排序最吸引人的是它能够保证任意长度为N的数组排序所需的时间和NlogN成正比;它的主要缺...
分类:
其他好文 时间:
2014-09-22 21:42:33
阅读次数:
173
归并排序
O(NlogN),所以归并排序最坏情况能够达到快速排序的平均水准
需要额外的存储空间O(n)
1、对数据不断的分割,直到剩下一个一个的
2、合并数据,在合并的时候,其实是两个有序的数组,因此
这个过程是两个有序数组进行合并排序
// 归并排序
// O(NlogN),所以归并排序最坏情况能够达到快速排序的平均水准
// 需要额外的存储空间O(n)
...
分类:
其他好文 时间:
2014-09-22 03:03:21
阅读次数:
154
两个方法: 方法1. 利用 STL 中的 multiset (根据结点内的值)自动对指针排序。空间 O(N), 时间 O(NlogN).
方法2. 不利用任何 STL 函数。对指针建堆排序,只需要一个(win32: 4Byte)指针数组即可。空间 : O(K), 时间 O(NlogK)
...
分类:
其他好文 时间:
2014-09-21 17:30:21
阅读次数:
305
Sort a linked list inO(nlogn) time using constant space complexity.思路:采用归并排序或者快速排序#include using namespace std;struct ListNode { int val; ListNo...
分类:
其他好文 时间:
2014-09-20 20:12:09
阅读次数:
230
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实...
分类:
其他好文 时间:
2014-09-18 11:04:53
阅读次数:
225
Sort a linked list in O(n log n) time using constant space complexity.记得Insert Sort List, 那个复杂度是O(N^2)的,这里要求O(nlogn),所以想到merge sort, 需要用到Merge Two Sor...
分类:
其他好文 时间:
2014-09-18 01:57:43
阅读次数:
199
题目:两个人到一个有很多岛屿组成的国家,求两人按相同顺序参观的最大岛屿数。
分析:dp,LIS,LCS。本题有两种解决方案,LCS,LIS。
LCS:对两人分别排序,找出编号的 LCS即可 T = O(n^2);
LIS:利用映射关系,将 LCS转化成 LIS即可 T = O(nlogn);
转化有点恶心,求出排序...
分类:
其他好文 时间:
2014-09-15 21:22:19
阅读次数:
195