码迷,mamicode.com
首页 > 其他好文 > 详细

二模 (13)day1

时间:2014-10-22 20:20:02      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:style   color   os   ar   sp   数据   on   amp   bs   

第一题:

题目大意:

N个发射站排成一排,求每个发射站左右第一个比它高的发射站。 N<=1000000

 

解题过程:

1.前几天做poj的时候刚好在discuss里看到有一个神奇的东东叫单调栈,正好派上用场。。。虽然本题2s的时限RMQ+二分应该也不会超时,但是容易写错。而单调栈不仅O(N)的复杂度,写起来也简单。。

2.具体做法是:从左往右边扫一遍,维护一个单调递减的栈.如果当前元素的高度大于等于栈顶,就不断弹出栈中元素直到栈顶元素小于当前元素.那么对于弹出的元素,它右边的第一个比它高的就是当前元素。对于当前元素,最后栈顶的元素就是它左边第一个比它大的数。

初始得分100.

 


 

 

第二题:

题目大意:多重背包+无线背包+可以切割的背包。

 

解题过程:

1.直接分3种物品 分3次写背包就可以了。为了防止出错,没有用滚动数组,结果发现滚习惯了,不滚反而写不来了...调了好一会儿。。

初始得分100.

 


 

第三题:

题目大意:

N个点,M条边,求从1到N的最短路,在同一个强联通分量里的点相互到达不需要花费(1<=n<=200000,1<=m<=1000000)

时限2s.

 

解题过程:

1.这题就是POJ一道题的加强版,学强联通分量的时候做过了.Tarjan缩点+最短路即可.但是此题数据比较恶心,Tarjan缩点爆系统栈了说。按出题人的本意这题还要卡spfa,必须要dijkstra+heap.但是还是用spfa 1s+搞过去了..

2.非递归没怎么写过,把Tarjan 改成非递归的 整了一个下午. 大致思路说明下:对于自己模拟的栈中元素,需要保存它的节点编号 && 它的下一个需要dfs的儿子 && 它的上一个dfs的儿子(low[u]=min(low[u],low[v])的时候要用到). 还有好多小细节.

本来感冒就头晕,调得更是头昏脑涨...果然还是太弱了。

初始得分70分.

 

 

总结:

1.首先对怎样规模的数据dfs容易爆栈有了大致的估计。

2.非递归不好写,还是应该写个递归的版本,毕竟被卡掉的只是少数点,有时间再来改...还有切记不要把原来的递归版本删了,要留起来对拍... (今天就是非递归死都调不出来,递归版本手贱又删掉了,又懒得重新写一遍...)

 

二模 (13)day1

标签:style   color   os   ar   sp   数据   on   amp   bs   

原文地址:http://www.cnblogs.com/vb4896/p/4044092.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!