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

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 正经题解|摇摇晃摇

    摇摇晃摇 题目大意 给定一个只包含-1与1的序列,要求你执行一次操作使aia_iai 与ai+1a_{i+1}ai+1 变为相反的数字,相反的定义为1变-1,-1变1。从而使得该序列的总和最大。 思路解析 在序列当中,我们只能选择两个相邻的数字进行操作,那么只有可能有以下三种情况。 1. -1,-1 : 一旦遇到这种组合直接执行操作即可。 2. -1,1 或 1,-1 :在没有第一种情况下,如果我们想要数值最大,选定这两种情况翻转即可保持总数不变。 3. 1,1 : 当一和二的情况没有出现时,那么该序列只有可能全为1,我们才可以选择该情况进行操作。 我们可以先将数值总和sumsumsum计算出来,根据是否存在情况1、2、3决定将sum+4sum + 4sum+4 或 sumsumsum不变 或sum−4sum - 4sum−4即可。 时间复杂度 O(n)O(n)O(n) 代码演示

    userId_undefined

    AC君

    管理员
    倔强青铜
    30阅读
    0回复
    0点赞
  • 找规律即可

    可以发现,当-1出现的次数比2多的时候,实际上的答案是两个-1每个增加2,最后共增加4;当不足2时,只能更换1,答案共减少4

    userId_undefined

    MuktorFM

    荣耀黄金
    14阅读
    0回复
    1点赞
首页