zoukankan      html  css  js  c++  java
  • 2017-10-5模拟赛T2 小Z爱排序(sorting.*)

    Description


    Solution


    比赛时找到了规律,但是没有证出来……(当然最后还是AC了……)

    显然没有被操作的数在排好序的序列中一定是连续的一段。

    所以,没有被操作的数一定从左到右连续地递增(例如23456)。

    而题目要求被操作的数尽量少,就是没有被操作的数尽可能多,找到满足条件的最长的一段就可以了。


    例如,对于数据1 4 5 3 2 6 7 9 8,最长的一段为45678,所以最少操作次数为4。

    附方法:

    3放前=>314526798

    2放前=>231456798

    1放前=>123456798

    9放后=>123456789


    言归正传,找出这个最长的一段的长度len,则n-len即为答案。

    类似动态规划,对于第i个数a,如果a!=1且前面出现a-1(可以用数组维护),那么f[i]=f[出现a-1的位置]+1,否则f[i]=1。则答案为n-f[n]。复杂度O(n)。


    拓展:

    ①如果题目要求找出方法呢?(当然得有spj)

    ②如果不是1~n的排列而是可以有重复的数呢?

    Code


    404 Not Found
    View Code
  • 相关阅读:
    easyui多选与接收不一致解决方案
    PEP8规范总结
    python2与python3的区别
    双下方法(魔术方法内置方法)
    文件操作
    抽象类,接口类,归一化设计,多态,鸭子类型
    html
    数据库的初识
    boby标签中相关标签
    爬虫介绍
  • 原文地址:https://www.cnblogs.com/hotwords/p/7749651.html
Copyright © 2011-2022 走看看