zoukankan      html  css  js  c++  java
  • 二模 (13)day1

    第一题:

    题目大意:

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

  • 相关阅读:
    08简单推导:手机尾号评分
    07简单推导:生日蜡烛
    06普通推导
    05简单推导:猴子吃桃
    简单推导
    03map用法
    List题目
    02List的使用
    01基础知识
    HDU
  • 原文地址:https://www.cnblogs.com/vb4896/p/4044092.html
Copyright © 2011-2022 走看看