GDKOI2016 題解

day 1

  
  Problem 1. 魔卡少女
  題意:動態維護區間內所有子序列的異或和的和,單點修改。
  解法:先做一個序列的異或前綴和Si=AiSi1 ,於是查詢就變成了詢問[l,r] 內的i<jSjSi 。注意到元素的大小隻有1000 ,也就是不超過10個二進制位,這樣我們可以維護每個位在區間內的個數,開10棵線段樹,每次查詢就是查詢區間內0和1的個數然後乘一下,修改Ap=x 的話就看新元素和舊元素每個位上有沒有變化,如果有就對對應位的線段樹上的[p+1,n] 區間將0和1的個數交換一下即可。時間複雜度O(n+10mlogn)
  
  Problem 2.不穩定的傳送門
  題意:太麻煩了不說了。
  解法:設fi 表示第i 個點到終點的最小期望代價。假設現在已經選了一些門並按照最優順序走了,然後要判斷走下一個門是否可以更優。設下一個門能夠走到j 這個點,花費和期望分別是w,p ,如果更優,就有fi>p(fj+w)+(1p)(fi+w) ,化簡一下可以得到w/p+fj<fi 。於是我們就可愉快地按照w/p+fi 排序然後貪心直到不能擴展爲止,並繼續往前計算f 。時間複雜度O(nlogn) 。(似乎這個做法不是標解?然而whx看了題幾min之後就看出了這個做法來了太強啦!
  
  Problem 3.尋寶
  題意:太麻煩了不說了。
  解法:先拓撲排序一次判斷那些點是有用的,然後按照分數規劃的模型二分答案t ,設兩個權值分別是ab ,那麼每個點有新權值atb ,對這個新圖建一個最大權閉合圖就可以了。因爲是網絡流所以複雜度比較玄學。
  
  Problem 4.地圖
  題意:給一個矩陣,矩陣上的某些點是不知道狀態的,計算使得給定(或者自己定)的三個點聯通的方案數。
  解法:無腦插頭DP,狀態存聯通塊的最小表示法,直接枚舉每個位置填什麼然後直接轉移即可。

day2

  Problem 1.染色大戰
  題意:???
  解法:無腦博弈記憶化大爆搜,狀態壓縮下棋盤的局面,記憶化一下,然後爆搜枚舉,當前狀態要轉移到下一個對手最劣狀態就可以了。
  
  Problem 2.QT與泰劇
  題意:求[l,r] 內和r 模3同餘且不完全由2,3,5,7 組成的數的個數。
  解法:數位DP,設f[i][j][k] 表示第i 位取j 這個數且模3餘k 的不合法數的個數,設g[i][j][k] 表示第i 位取j 且模3餘k 的數的個數,利用這兩個方程直接計算即可。
  
  Problem 3.項鍊
  題意:太麻煩了不說了。
  解法:將原串複製一次接到後面之後,做一次manacher,設原串長度爲n ,實際上就是要求兩個點i,j,|ij|n 使得以這兩個點爲中心的迴文串相鄰並且長度和最大。這個一個log愛怎麼搞怎麼搞。(過一會補接近線性的做法)。
  
  Problem 4.小學生奧數
  題意:求ni=1i1modpk ,其中p105
  解法:太長了新開一篇文。
  http://blog.csdn.net/GEOTCBRL/article/details/50725904
  //留坑待填

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章