CSP-S 模擬91

簡要寫一下數據結構


 

  Dove 打撲克優化

    並查集維護堆的合併,最多合併n-1次,且size不一樣的堆的種類不可能超過$\sqrt(n)$ 種,並且堆的個數愈來愈小,並且操做次數大概是$3n$spa

    基於以上幾點,咱們暴力幹它關於合併的操做能夠暴力,而後用數據結構等優化查詢操做$O(\sqrt(n))$或$O(1)$查詢排序

  Cicada 與排序io

    機率DP,設f[x][y],表示初始時在x位置的數當前在y位置的機率,cet[y][k]表示歸併排序中從兩個兒子合併成一個大區間時位置y上的數移動到位置k  的機率for循環

    顯然,本輪合併完成後,當前的$f[x][k]=$原來的$f[x][y]*cet[y][k]$,跑一遍歸併排序,回溯的時候更新當前的機率,最終獲得f[i][j]表示初始i  位置的數排完序後在位置j的機率循環

    機率乘上對應的j後在加和就是位置i最後的指望位置二進制

  Cicada 拿衣服鏈表

    隨着區間長度增長,$or$和$max$單調不降低,$and$和$min$單調不上升,$min-max$ 單調降低,而$or-and$ 不肯定數據

    因此考慮二進制下,最多有log位,肯定右端點後,找左端點,在左端點的選擇範圍中必定有一段段$or-and$相等的區間,而這樣的區間最多約有log  個,在劃分的區間內部$or+min-max-and$ 單調,因此能夠二分,能夠用鏈表維護分界點,查找左端點時其實不須要一個個區間二分,由於區間內部單調,  因此找區間最值看是否知足大於等於k,

  從左向右找第一個存在合法左端點的區間,在這個區間二分便可

    打了一下午加半個晚上,沒調出來,鏈表沒錯,線段樹沒錯,for循環沒錯,可能會錯的我都沒錯,最後發現不知道何時複製粘貼的最不可能錯的  一句掛了,提醒廣大觀衆朋友:

  打代碼千萬不要過於依賴複製粘貼

相關文章
相關標籤/搜索