1. 程式人生 > >hdu6215 Brute Force Sorting(模擬)

hdu6215 Brute Force Sorting(模擬)

n) 很多 利用 暴力模擬 所有 只需要 維護 需要 刪除

題意

  給一個長度為n(n<=1e5)的序列,如果一個位置i滿足a[i-1]>a[i]或者a[i]>a[i+1],那麽我們就稱該位置是不合法的位置

  先把序列中所有不合法的位置統一找出來,然後再一起刪除,剩下的合並成一個新序列

  再對新序列重復操作,直至最後每個位置都是合法的

  現在你需要輸出最後的序列長什麽樣

分析

  如果根據題意用鏈表去直接暴力模擬那麽會T

  會T的原因就是可能有很多不應該被刪除的位置我們去從前往後遍歷了很多遍

  註意發現一個規律,某一次可能的不合法位置一定是上一次不合法位置的左邊或者右邊

  所以我們可以利用並查集維護每個元素當前的左邊和右邊,然後每次將上一次刪除的位置記錄下來,這一次只需要check那些位置的左邊或者右邊是否合法就行了

  時間復雜度O(n)

hdu6215 Brute Force Sorting(模擬)