zoukankan      html  css  js  c++  java
  • hdu6215 Brute Force Sorting(模拟)

    题意

      给一个长度为n(n<=1e5)的序列,如果一个位置i满足a[i-1]>a[i]或者a[i]>a[i+1],那么我们就称该位置是不合法的位置

      先把序列中所有不合法的位置统一找出来,然后再一起删除,剩下的合并成一个新序列

      再对新序列重复操作,直至最后每个位置都是合法的

      现在你需要输出最后的序列长什么样

    分析

      如果根据题意用链表去直接暴力模拟那么会T

      会T的原因就是可能有很多不应该被删除的位置我们去从前往后遍历了很多遍

      注意发现一个规律,某一次可能的不合法位置一定是上一次不合法位置的左边或者右边

      所以我们可以利用并查集维护每个元素当前的左边和右边,然后每次将上一次删除的位置记录下来,这一次只需要check那些位置的左边或者右边是否合法就行了

      时间复杂度O(n)

  • 相关阅读:
    Java calendar类学习笔记
    Anaconda 学习笔记
    第八周作业
    第七次作业
    第六周作业
    第五次作业
    用户调研方法之焦点小组
    第三周作业
    软件工作量的评估方法有哪些
    软件质量保证与测试(--作业--)
  • 原文地址:https://www.cnblogs.com/wmrv587/p/7623038.html
Copyright © 2011-2022 走看看