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

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 正经题解|最小绝对差值和

    题意解析 犹豫只能操作一次,所以我们可以枚举被替换的元素 AiA_iAi 。统计未替换时,AAA 和 BBB 的绝对差值和 sum\tt{sum}sum,然后记录枚举 AiA_iAi 的过程中替换后可以减少的差值的最大值 maxDiff\tt{maxDiff}maxDiff,最后的答案即为 sum−maxDiff\tt{sum - maxDiff}sum−maxDiff。 接下来我们考虑如果快速求出对于每个 AiA_iAi 的 diff\tt{diff}diff。要想最小化 Ai−BiA_i - B_iAi −Bi ,那么我们可以在数组 CCC 中找到一个最接近 BiB_iBi 的数字。 使用二分查找在数组 CCC 中,第一个大于 BiB_iBi 的元素下标 jjj,那么此时 Cj−1 (1≤j−1<N)C_{j-1}\ (1 \le j - 1 < N)Cj−1  (1≤j−1<N) 为最后一个小于等于 BiB_iBi 的数字。此时与 BiB_iBi 的差最小的元素,为其中一个,取最小值即可。 AC 代码 复杂度分析 对于每个 AiA_iAi 使用二分查找数组 CCC 中最接近 BiB_iBi 的数字,时间复杂度为 O(log⁡N)\mathrm{O}(\log{N})O(logN),总的时间复杂度为 O(Nlog⁡N)\mathrm{O}(N\log{N})O(NlogN)。

    userId_undefined

    AC君

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