http://soj.sysu.edu.cn/show_problem.php?pid=1000&cid=1762这题的n达到了1000000,n^2的最长递增子序列做法肯定超时,于是有一种二分的算法,与此题完美地结合起来!达到nlogn的时间复杂度! 1 /* 2 最长递增子序列+二分查找 3 ....
分类:
其他好文 时间:
2015-03-29 12:15:33
阅读次数:
186
题意:n个点m条有向边组成的有向无环图,可以最多删除k条边让他的拓扑序最大。输出最大的拓扑序。
思路:在以前的topsort中是入读为零的点入队列,这里有k次机会可以删除边,那么我就把所有入度<=k的点全入队列,用优先队列维护最大的点序列号,去掉点最大序列号的所有入边,将它加入到拓扑序中,这样贪心是最优的。...
分类:
其他好文 时间:
2015-03-29 10:55:34
阅读次数:
144
题意:找出最长公共自序列,有一样长的取字典序小的。如果lcs长度为0,输出哭脸。
做法:在最长公共子序列基础上,每次dp的时候 判断下两个string的字典序大小。最长公共子序列的复杂度是100*100,字符串最长是100,O(10^6)。...
分类:
其他好文 时间:
2015-03-29 10:50:16
阅读次数:
160
题意:给你一个序列a[i],代表 i这个数 在b数列中有多少个值在它前面且比它大,问你求B序列解题思路:线段树的简单应用,找第几个空,类似二分。解题代码: 1 // File Name: i.cpp 2 // Author: darkdream 3 // Created Time: 2015年...
分类:
其他好文 时间:
2015-03-29 10:43:46
阅读次数:
108
之所以把cdq分治和整体二分放在一起学习,是因为他们两个实在太像了…不管是做法还是代码…
感觉整体二分可能会比cdq分治稍微简单那么一点点?所以先学整体二分.(感觉他们的区别在于整体二分是对每个操作二分答案,cdq是分治了操作序列)
整体二分是对答案进行二分,其具体操作如下:
(比如以ZJOJ2013K大数查询为例)具体过程Step1.从(L,R)二分答案.mid=(L+R)>>1,用线段树维...
分类:
其他好文 时间:
2015-03-29 09:28:23
阅读次数:
139
题意:找到一个序列中极值 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 #include14 #include15 #include16 #include17 #include18 #in...
分类:
其他好文 时间:
2015-03-29 09:25:48
阅读次数:
120
题意:给你一个序列,问你删除掉连续的一段,使得剩下的序列的最长上升字串最大,问你这个最大值。解题思路:分段dp, dp[i][0] ,dp[i][1] , 0表示前面没有切过,只能从前一个数的0状态得到,1状态表示前面已经切过了,能从前一个的1状态得到,也能从 在他前面的比他值小的dp[j][0]....
分类:
其他好文 时间:
2015-03-29 09:24:58
阅读次数:
128
算法说明假设煎锅里边有N个煎饼摞在了一起,它们大小不一并且顺序不一致,我们需要通过拿铲子将它们不停的翻个,进行排序,最终得到一个底下是大的煎饼,上边是小的煎饼的序列。这个排序的过程就是煎饼排序。这个算法有两种解,一种是普通解,一种是最优解。普通论证:例如你的初始煎饼顺序是[2,4,3,1]然后2与4...
分类:
编程语言 时间:
2015-03-29 07:02:13
阅读次数:
118
基数排序思想完全不同于以前的排序算法,可以说,基数排序也叫做多关键字排序,基数排序是一种借助“多关键字排序”的思想来实现“单关键字排序”的内部排序算法。两种方式:1、最高位优先,先按照最高位排成若干子序列,再对子序列按照次高位排序2、最低位优先:不必分子序列,每次排序全体元素都参与,不比较,而是通过...
分类:
编程语言 时间:
2015-03-29 01:51:12
阅读次数:
156
题目:Flatten Binary Tree to Linked List
/**LeetCode Flatten Binary Tree to Linked List
* 题意:给定一个二叉树,将其转变为一个相当于单链表的结构,观察可知该结构即:每一个节点左儿子为空,右儿子指向自己先序遍历时的下一个节点
* 思路:有观察可得,应对其进行先序遍历,得到正确的序列连接起来
* Defin...
分类:
其他好文 时间:
2015-03-29 00:38:37
阅读次数:
143