zoukankan      html  css  js  c++  java
  • Sorting A ThreeValued Sequence

    (1)开始只考虑了从第一个元素开始查询,找到每个放置不对的元素nums[i],然后再他应该放置的位置targetP,交换这两个位置的元素,结果没有通过第三个测试

    (2)仔细观察了运行的中间状态,发现问题出在当出现这种情况是13222323113的时候,就是说当前最有的交换应该是一种A-B到B-A的,而我遇到的可用的第一个交换位置却产生的是A-B到C-B的结果。

    可是我还是做的是一个查找的工作,每次查找可交换点,浪费时间

    (3)USACO的解答思路1是:首先找到配对的两个填错的地方(A-B和B-A),这样可以计算出只交换一次就能更正的地方;然后其余的都是需要1-2-3动3个位置,交换两次,因此只要计数还没有放对的位置数目,然后/3*2就得到需要的交换次数。

    需要复制一份原来的数组,时间复杂度为O(n^2)

    思路2:基本跟我的想法一致

    思路3:更加灵巧,根据题目的规则来计算。计算出1、2、3分别的个数,然后计算出,在1中2的个数,3的个数,以此类推。那么

    min(2sin1, 1sin2) +min(2sin3, 3sin2) +min(3sin1, 1sin3)

    + 2 * (max(2sin1, 1sin2) - min(2sin1, 1sin2))

  • 相关阅读:
    【BZOJ3110】K大数查询(权值线段树套线段树+标记永久化,整体二分)
    【BZOJ3669】魔法森林(LCT)
    art-template前端高性能模板
    spring新心得
    工作流程
    idea操作
    log4j学习
    对实体 "useSSL" 的引用必须以 ';' 分隔符结尾。
    JUnit4学习
    maven搭建
  • 原文地址:https://www.cnblogs.com/growup/p/2024360.html
Copyright © 2011-2022 走看看