日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

旧题新做:从idy的视角看数据结构

發布時間:2023/12/9 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 旧题新做:从idy的视角看数据结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  “今天你不寫總結……!!!”

  額……

  還是講我的吧。這些考試都是idy出的題。

20170121:DFS序、 ST表、線段樹練習

  這是第一次考數據結構。

  Problem 1. setsum?1 second
    給你一個長度為N 的整數序列,支持兩種操作:
    ? modity l r val 將區間[l,r] 中的所有數修改為val
    ? query l r 詢問區間[l,r] 所有數的和

  分析:最簡單的線段樹,區間更改區間求和。但注意是更改,不是添改,sum與flag需同時覆蓋。

  Problem 2. subtree?1 second
    給出一棵N 個點的有根樹(以1 為根),每個點有點權,要求支持:
    ? modify u x 把節點u 的點權加x
    ? query u 詢問u 代表的子樹的點權和

  分析:DFS序,單點修改區間求和

  Problem 3. matgcd?1 second
    給出一個N M 的正整數矩陣,再給出Q 個詢問:
    ? query x1 y1 x2 y2:詢問(x1,y1)-(x2,y2) 這個子矩形的最大公約數。

  分析:idy所說的“正解”,我現在依舊很敬畏。樹套樹,外面按行,行有ls,rs但也有一棵按列的樹。合并時,ls的被套樹與rs的被套樹相合并。查詢時,若行已卡入,則進入其按列樹進行統計。此題無修改,若有修改,則標記需要好好講究。但此題就是無修改,故可用ST表水過去。代碼實現很暴力。

20170122:LCA 值域線段樹 加 復習

  基本在樹上。

  Problem 1. distance?1 second
    小慶住在一個很特別的國度里,它有N 個城市,并且只建了N -1 條雙向路,但神奇的是任意兩個城市都可以通過這些路連接起來。小慶最近在研究寒假的旅游計劃,有時她想快速地知道兩個城市之間的距離,于是找你來幫幫解決。

  分析:ST表倍增經典做法,存anc與cost。

  Problem 2. redpacket?1 second
    承上題)小漫是小慶那個國家的國王,她住在1 號城市,u 號城市如果到1 必定經過v 號城市,我們則稱v 號城市管轄u 號城市(v 號城市也管轄自己)。過年了,小漫想給國家的一些城市發紅包,每次她會給u 號城市管轄的每個城市發放w 的紅包,有時,她也想知道某個城市或被某個城市管轄的城市一共得了多少紅包。如下:
    ? give u w :表示將u 號城市管轄的每個城市發w 的紅包。
    ? single u :表示詢問u 號城市得了多少紅包。
    ? all u :表示詢問u 號城市管轄的城市一共得了多少紅包。

  分析:DFS序,簡單處理。

  Problem 3. kth?1 second
    小敏有個可重集S,一開始就包含一些整數,現在有三種操作需要你執行:
    ? add x 將整數數x 加到集合中
    ? del x 如果集合中有整數x,則刪除一個x,否則忽略本操作。
    ? query k 詢問這個集合中第k 小的整數數是多少

  分析:值域線段樹,若不提前給出上下界,須讀入離散化。

20170123:最SXBK的一次練習

  額額額額額。

  Problem 1. dcplca?1 second
    這是一道練習題,要求你們用鏈剖來寫lca,熟悉鏈剖的過程。(以節點1 為根)

  分析:神奇的idy為了防止你用倍增,一定會卡O(nlog n)的內存。但是,鏈剖確實不難寫。DFS1:siz,son,fat,dep。DFS2:top,in,out,seq。DFS2中的后三者是為了方便用線段樹DFS序,一條重鏈上in值是連續的。

  Problem 2. treekth?1 second
    給你棵帶點權樹,一些詢問:
    ? query u v 詢問節點u 和v 之間的簡單路徑上的點權的中位數1。

  分析:這道題才是真正SXBK的那道題。先用樹鏈剖分(后面求LCA),再DFS建出主席樹(存鏈值),然后用差分求出中位數。但是,就是調不出來!!!(筆者現在已經調了出來……)

  Problem 3. full?1 second
    我們來個完全版如何?
    給你棵帶點權的樹(以1 為根),要你完成一些操作。
    ? msub u x:將u 代表的子樹的點權整體加x
    ? mpth u v x:將u 到v 的簡單路徑的點權整體加x
    ??qsub u:詢問子樹u 的點權和
    ? qpth u v:詢問路徑u 到v 的點權和

  分析:鏈剖與DFS序共存。

20170318:數據結構第1套模擬題

  是否變難了?

  Problem 1. rotinv?2 seconds?256 MB
    如果你有一個長度為n 的序列:
      a1,a2,a3,……,an
    那么它的一個逆序對是一個二元組:< i, j > 滿足i < j 且ai > aj,其中i, j ∈ [1, n]。
    我們稱一個序列所包含的逆序對的個數為這個序列的逆序對數。
    那么問題來了:
    我給出一個長度為n 的序列,需要你計算:

        a1,a2,a3,……,an-1,an

      a2,a3,a4,……,an,a1

             ?……

        an,a1,a2,……,an-2,an-1
    這n 個序列的逆序對之和。

  分析:方法很多,但大致相似。轉化為數學公式,然后用樹狀數組快速解決。對于這種問題的極困難版,可見BZOJ 圖騰。

  Problem 2. rise?2 seconds?256 MB
    你有一堆柱子,它們豎直地并排擺放在桌子上,它們的高度分別是:

h1,h2,h3,……,hn

    你從前往后看,能夠看見的柱子個數為這個柱子序列的“可見度”(能夠看見柱子i 當且僅當hj < hi & j < i)。
    現在給你一個長度為n 的序列,還有m 個詢問,每次詢問某個區間[l,r] 的柱子單獨拿出來后,其可見度是多大。

  分析:當時并沒有看懂題解。后來做了一道BZOJ 樓房重建,再一看便恍然大悟。與那道題相似,但需要多存儲一些東西。因為沒有修改,可以充分使用此題的性質。但丁神在統計的時候,把所有線段先放入了棧,再集中處理。看似更加麻煩,但其實更加樸素,更加靈活。還有,當時很迷,于是寫了個暴力(鏈表)水了過去。

  Problem 3. seqmod?2 seconds?256 MB
    給你一棵無根樹,邊有邊權,且是[0,9] 之間的整數,給你m 個詢問,每次詢問兩個點u, v 之間的路徑的邊的邊權順次連接起來后構成的那個數字取模于31。

  分析:題面十分易懂。鏈剖也很好想,但是,就像其他很多的DS題一樣,你以為自己已經明白了,但還是有太多細節沒有想到。為了方便合并,idy想到用struct來做到方便的合并。找路徑的方式也有不同,誰深了就跳誰,最后到同一條鏈上進行最后的合并。每一個節點也存了2個方向,但怎樣區分?很簡單,按深度。

20170404:practice before 省選

  啊啊啊啊啊!

  Problem 1. setmod?2 seconds?256 MB
    給你一個序列:a1,a2,a3,……, an,有m 個操作,操作如下:
    ? modify l r x  將區間[l,r] 中的每個數修改為x
    ? change l r x 將區間[l,r] 中的每個數加上x
    ? query l r 詢問區間[l,r] 中的和

  分析:我在處理時,用了一種叫做kill的標記。因為“修改為”==“清場”+“加上”。但是,這似乎有點不負責任。若+=與=標記同時作用,當然很好想。若只用一個,需用type。

  int type;?// type==1 change += 改改改delta 原delta或無則++ 原value則value++?
  dnt delta, value;?// type==2 modify = 改value

  Problem 2. area??2 seconds?256 MB
    給出n 個矩形,求它們的面積并.
    更準確一點,每個矩形將給出它的左上角和右下角的位置:x1,y1, x2, y2
    這四個數都是整數且滿足x1<=x2,y1<=y2.
    我們需要你求:
      area =|{ f(x, y) ∈ Z × Z | ??a rect. s. t. x1<=x2 and y1<=y2 }|

  分析:掃描線,標記永久化。時候不早了,明天再來。

  Problem 3. intkth?3 seconds?512 MB
    我看好你喲。
    給你一個長度為n 的序列,有m 個操作:
    ? modify u x 將第u 個數修改為x
    ? query l r k 詢問區間[l,r] 中第k 小的數

  分析:此題很有趣。樹狀數組套線段樹,很好實現。

?

轉載于:https://www.cnblogs.com/Doggu/p/idy_DS.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的旧题新做:从idy的视角看数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。