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

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(1)讨论(0)提交记录(136)
  • 正经题解|变换数字

    题目大意 给你 nnn 个数,只包含 000 与 111。 可以操作一次,选择一个区间 一定要选择。 将区间内的 111 变为 000,000 变为 111。 题意分析 问操作一次后,最多剩余多少个 111。 解题思路 我们可以记一下原序列每个区间 111 的数量,这个时候你应该要能想到前缀和。 用前缀和记录 1 ~ n 之间 111 的数量,用数组 sumsumsum 记录。 既然我能够知道每个区间 111 的数量,就能推算出 000 的数量。 比如我现在选择一个区间 [L,R][L,R][L,R],那么这个区间 000 的数量就是,(R−L+1)−(sum[R]−sum[L−1])(R - L + 1) - (sum[R] - sum[L-1])(R−L+1)−(sum[R]−sum[L−1])。 最后我们可以枚举所有的区间情况。 时间复杂度分析 求前缀和 O(n)O(n)O(n) 枚举区间 O(n2)O(n ^ 2)O(n2) 代码演示

    userId_undefined

    AC君

    小有名气倔强青铜管理员
    57阅读
    0回复
    1点赞
首页