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

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 官方题解|数组片段匹配

    T2 - 数组片段匹配 注意题目中标注要求满足条件的长度相同的子数组中,只需要 存在\bf{存在}存在 数对 p(xi,yi)(1≤i≤k)p(x_i, y_i) (1 \le i \le k)p(xi ,yi )(1≤i≤k) 其中 xi=yix_i = y_ixi =yi 即可。 这点提示我们要关注相同的元素。那么对于两个相同的元素,各自形成的子数组,如果两者在原数组中距离较远,则包含其子数组长度越短,反之,包含其子数组的长度越长。 在原数组中令 ai=bj(1≤i<j≤n)a_i = b_j(1 \le i < j \le n)ai =bj (1≤i<j≤n) 这个长度可以拆分成两个部分 xxx 和 yyy,其中 x=ai,y=n−ajx = a_i, y = n - a_jx=ai ,y=n−aj ,那么最终我们要求的答案就是枚举数组中相邻的相同数字的位置 x+yx + yx+y 即 n−(aj−ai)n - (a_j - a_i)n−(aj −ai ) 最大的就是答案。 若数组中没有重复数字,显然不存在满足条件的两个子片段。 AC代码 复杂度分析 代码实现上,遍历数组 aaa,令外使用一个数组 preprepre 记录数字 xxx 在数组中出现的上一个位置,随着遍历不断更新,得到答案。时间复杂度为 O(n)O(n)O(n)。

    userId_undefined

    AC君

    管理员
    倔强青铜
    4阅读
    0回复
    0点赞
首页