雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年10月30日

摘要: 求序列的最长子序列中不可分割元素的数目。不可分割元素,肯定属于某一个最长子序列,首先做的就是把属于最长子序列的数提取出来,减小查找范围。怎么提取?可以用LIS(最长递增子序列)和LDS(最长递减子序列)。对序列,从前往后,求以每个数 a[i] 为底最长子序列数组index。从后往前,求以每个数a[i]为底的最长递减子序列数组index2。线扫一遍,如果index[i] + index2[i] == length+1(length表示最长子序列的长度),那么这个数就是属于某一个最长子序列的。 提取出来以后,对每个数a[i],看它所对应的index1[i] 在整个数组中出现几次,如果只出现一次,. 阅读全文

posted @ 2013-10-30 22:24 huhuuu 阅读(422) 评论(0) 推荐(0) 编辑

摘要: http://ac.jobdu.com/problem.php?pid=1501如果一行数列里没有0,则我的方法是用两个变量正数与负数,sum表示前面数的乘积, 随时将sum 正负归类放在两个变量里,到 i 位置若为sum为负数,则在负数优先队列里找最大的负数去除到 i 位置若为sum为正数,则在正数优先队列里找#includedouble zmin;//ᅰ�ᅧ�double Fmax;//ᄌ쳐�double inp[100099];double dp[100099];int main(){ int n; while(scanf("%d",&n)!=EOF){ i 阅读全文

posted @ 2013-10-30 20:11 huhuuu 阅读(270) 评论(0) 推荐(0) 编辑

摘要: 这是面试中比较常见的题目,max队列也是编程之美里的一道题对于max的栈,有个比较简单的办法就是,每次入栈前判断栈顶元素与正在入栈的元素哪个大,哪个大就哪个入栈对于队列,我们知道可以用两个栈来实现,这时,我想到是否可以用栈来维护max的队列结果是可以的,不过要用三个栈, 1 +2 ,前一个max栈+ (后一个max栈+普通的栈) ,每次寻找max都在前一个max栈和后一个max栈中找,而要更新前一个栈的时候,要把普通的栈来去更新考虑 1,2,4,3 进1进2进4进3出1出2出4 大4大4大3/*10push 1push 2push 4push 2popmaxpopmaxpopma... 阅读全文

posted @ 2013-10-30 18:01 huhuuu 阅读(447) 评论(0) 推荐(0) 编辑