ACM訓練日記 8月23日

2021-08-07 07:55:52 字數 768 閱讀 7624

早上的時候剛得知樹狀陣列的專題聯絡早就已經開了,我這才開始去做。樹狀陣列這個專題對我來說果然是有難度的,目前今天做出來的題都是些水題。

第1001題,說的是有那麼乙個二維的網格,上面有書,四種對書的操作,增,刪,移動,求和。這道題我其實之前看過類似的二維樹狀陣列的部落格,思路都一樣,二維的樹狀陣列行與行之間,列與列之間都是和一維一樣的lowbit關係。

還做了一道dp+樹狀陣列的題,就是求乙個陣列的上公升子串行的總數按照動態規劃就是設dp[i]是以i為結尾的上公升序列總數,那麼dp[ i ]=sum(dp[ j ]), j < i 且 a[ j ]< a[ i ]。這其實也是水題,很明顯按常規做法是大約n^2,而如果用樹狀陣列記錄以a[ i ]數為結尾的上公升序列總數,依次處理加和就算出來了,當然還一定要記得進行離散化處理。

第17題是我看過部落格的一道題,感覺印象深刻,可就是記不清了,推導了半天才想到了點頭緒,是二分+樹狀陣列,講的是一隊牛,編好了號(沒重複的號,從1,,,到,,n),後來打亂了順序,給出每頭牛前面有多少牛編號比它小,求現在的順序。這道題上來完全可以通過給出的陣列末尾的數求出最後一頭牛的編號,然後就可以從後向前依次推導,這時我們假設i位置上的數是x,用樹狀陣列標記右面有什麼數出現從而很容易求getsum()任意數前面有多少比它小的數出現過,那麼x-1-getsum(x)=a[i](給出前面有多少比x小的數)而對於x,就存在乙個單調關係,因getsum(x)一定程度隨x變化不比x大,那麼x越大x-1-getsum(x)就越大,二分查詢出x點就可以了。

果然對之前的部落格消化一直不徹底,17題一直感覺印象深刻,看過,可就是做的有些費勁。。。

ACM訓練日記 8月8日

經過今天的訓練,還真有點累,主要因為是下午的訓練賽,前兩道題特別的簡單,可到了第三題就直接麼懵了,最鬱悶的是賽後看題解還完全看不懂,是線性dp的問題,看了好幾篇部落格,還是半懂,甚至開始懷疑自己動態規劃怎麼學的,明天還是先了解下線性dp的事再看這道題吧。另外利用上午和晚上的時間,勉強a了三道題。第一...

ACM訓練日記 7月23日

今天做了第一場杭電的多校練習賽,還是有許多欠缺,在1007題上還有許多疑問,官方給的題解確實沒學過阿貝爾變換,迷你改天還要仔細學習一下,但是在直播的時候又講了另一種方法完完全全和我們推得規律一樣,方法也一樣,唯一乙個不同就是它對長度在做了乙個小優化,可疑問的是我在此按照up主講的優化完還是超時,到現...

ACM訓練日記 8月4日

今天雖然只a了三個題,但感覺也算是扎扎實實的三道題,分別是數獨,塗顏色,分兩組。數獨這道題很明顯是深搜,9 9的方格填滿數,使得橫排,豎排,和9個3 3的小方塊只有1到9不重複的九個數,該題的關鍵就是做好數字使用過的標記,要做三個vis i j 然後就只需要吧空著的方塊填入判斷填數字,遞迴到填滿為止...