acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 【题解】血战二级市场

    血战二级市场 视频题解可点击此处查看 题目阅读 AC狗迷上了炒股,想要在二级市场赚钱。 市场中有一种概念叫做波幅,代表一段时间内股票的最高价和最低价的差额。 AC狗现在已经拿到了狗星农工科技公司连续N天的收盘价,他自己计算出了这N天的波幅,现在他想知道这N天出了空集之外所有连续子序列的波幅之和。 题意抽象 一个长度为n的序列Ai,求这个序列当中所有子序列(包括自身)当中,所有差值的和。 算法分析 面对求区间最大值问题,我们可以使用单调栈来解决这道题目。 在这道题目中,我们对于区间可以假设状态为f(i)或者f(i,j),进行转移。 设f(i)表示以i作为左端点的所有区间的最大值减最小值。 之后开始考虑状态转移: 假设f(i-1)进行转移,那么Ai便会更新一些区间的最大值或者最小值。 我们可以维护两个单调队列,一个上升,一个下降,符合Ai更新的特性。每次都算出更新的最大值和最小值的差进行累加即为答案。 代码讲解

    userId_undefined

    AC君

    管理员
    倔强青铜
    115阅读
    1回复
    6点赞
  • 题解

    userId_undefined

    法兰西玫瑰

    倔强青铜
    23阅读
    0回复
    1点赞
首页