這幾天看的少些,電子技術基礎終於是考完了。準備下週末的英語四級。。
在riba2534的部落格中看了乙個最長上公升子串行o(nlogn)的演算法:
每遍歷到乙個點,都將該點放在大於等於(大於也可以)該點value的第乙個點的位置。更改該點的value而不進行移動。如果該點比陣列中的最後乙個點大則整個陣列的長度加一。保證陣列lis[i]表示的是長度為i的子串行,末尾即最後乙個元素的最小值。最後陣列的大小就是最長上公升子串行的大小。
實現方式有:
定義d[k]:長度為k的lis的最小末尾元素,易知d中元素單調遞增首先len=1,d[1]=a[1]
對於a[i],若a[i]>d[len],則可將a[i]拼接在d[len]後成為更長的lis,所以d[++len]=a[i];
否則,我們要從d[1]到d[len-1]中找到乙個j,滿足d[j-1]開乙個陣列,每次取陣列末尾元素back和讀到的元素temp做比較,如果temp>back則將back插入到陣列末尾。
如果temp< back則二分查詢陣列中的比temp大的第1個數,並用temp替換它。這也是很好理解的,因為替換乙個比temp大的數使得陣列的』『潛力』'增大了——更容易找到更長的lis。最長序列長度即為陣列長度。
ACM訓練日誌
今天的比賽我們隊倆大佬出了倆題,後來過了時間又補了f題,總的來說我覺得今天訓練不簡單,被d題整的心態有點炸,後來于衡a掉了,貪心字首和,仔細看了隊友的 還是很有啟發的,附上原題和隊友的 原題 ac include using namespace std const int maxn 4e5 10 t...
ACM訓練日誌6
數字dp的訓練賽結束了,但是自我感覺我的水平還是差遠了,光從解題數量也看的出來,而且做出來的題都是裡面比較水的題目,難一點的還是做不出來。其中有兩個數字dp 二分的題目,兩個題很相像,能做出來一道另一道乙個道理也就做出來了,但是我折騰了好久,都沒出,樣例不過。目前認識的數字dp主要是 求出在給定區間...
ACM訓練日誌11
cf div2。大餅在實驗室,于衡在宿舍做的,單打。上來第乙個題的題目有點迷,叫做可持續化動態圖上樹狀陣列維護01揹包,題目是真的皮。兩分鐘題目別的學校一a,我們就開始做,過程中跟大餅交流了幾次,最終還是思路就錯了。後來乙個小時多大餅終於做了出來,比較難受的是wa了十次。後面的題目心有餘二力不足。週...