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))

  • 相关阅读:
    小a和uim之大逃离(dp)
    c++stl应用入门
    tar: 从成员名中删除开头的“/”
    yii中rights安装
    python中operator.itemgetter
    python中时间和时区
    python --那些你应该知道的知识点
    rsync拉取远程文件
    django中时区设置
    django中添加用户
  • 原文地址:https://www.cnblogs.com/growup/p/2024360.html
Copyright © 2011-2022 走看看